2012-07-19 127 views
2

我切換到MigLayout,當我拖動窗口變小時,組件調整大小,但是當我將其拖動大於啓動程序時的大小時,它們不會變大。我如何使它變得越來越小?JFrame調整大小

public SpriteEditor() { 
    SubstanceColorChooserUI col = new SubstanceColorChooserUI(); 
    while (mode == 0); 
    setResizable(true); 
    setTitle("DawnGuard Index 32/34 Editor"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setSize(483, 374); 
    setLocationRelativeTo(null); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 

    textField = new JTextField(); 
    textField.setColumns(10); 

    JButton btnLoadCache = new JButton("Load cache"); 
    btnLoadCache.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      try { 
       String loc = textField.getText(); 
       if (loc.equals("")) { 
        JOptionPane.showMessageDialog(SpriteEditor.this, "Please specify a location for the cache.", "Unable to load", JOptionPane.ERROR_MESSAGE); 
        return; 
       } 
       if (!loc.endsWith("\\")) 
        loc = loc + "\\"; 
       cache = new Store(loc); 
       loadImages(); 
      } catch (Exception e) { 
       JOptionPane.showMessageDialog(SpriteEditor.this, "Cache failed to initialize.\n" + e.getMessage(), "Unable to load", JOptionPane.ERROR_MESSAGE); 
      } 
     } 
    }); 

    JSplitPane splitPane = new JSplitPane(); 
    splitPane.setDividerLocation(150); 
    splitPane.setContinuousLayout(true); 

    JPanel panellie = new JPanel(); 
    panellie.setLayout(new BorderLayout(0, 0)); 
    panel = new ImagePanel(null); 

    scrollPane_1 = new JScrollPane(); 
    panellie.add(scrollPane_1, "Center"); 

    scrollPane_1.setViewportView(panel); 
    splitPane.setRightComponent(panellie); 

    JPanel panel_1 = new JPanel(); 
    splitPane.setLeftComponent(panel_1); 
    panel_1.setLayout(new BorderLayout(0, 0)); 

    JScrollPane scrollPane = new JScrollPane(); 
    panel_1.add(scrollPane, BorderLayout.CENTER); 

    model = new DefaultListModel<ListedImage>(); 
    list = new JList<ListedImage>(model); 
    list.addListSelectionListener(new ListSelectionListener() { 
     public void valueChanged(ListSelectionEvent arg0) { 
      if (arg0.getValueIsAdjusting()) 
       return; 
      ListedImage img = list.getModel().getElementAt(list.getSelectedIndex()); 
      panel.setImage(img.getImage()); 
     } 
    }); 
    scrollPane.setViewportView(list); 

    progressBar = new JProgressBar(); 
    progressBar.setStringPainted(true); 
    progressBar.setDoubleBuffered(true); 

    contentPane.setLayout(new MigLayout("", "[328px][13px][112px]", "[23px][279px][14px]")); 
    contentPane.add(textField, "cell 0 0,growx,aligny center"); 
    contentPane.add(btnLoadCache, "cell 2 0,growx,aligny top"); 
    contentPane.add(splitPane, "cell 0 1 3 1,grow"); 
    contentPane.add(progressBar, "cell 0 2 3 1,grow"); 

} 
+0

我自己,我建議不要試圖手動編碼GroupLayout。使用使用更簡單的佈局管理器的嵌套JPanel或下載MigLayout並使用它們更好。 – 2012-07-19 21:54:50

+0

我使用windowbuilder進行日食 – 2012-07-19 21:55:30

+0

編輯:我只是使用MigLayout,但它不能調整更大,只能更小。 – 2012-07-19 21:56:22

回答

1

在佈局定義你:

contentPane.setLayout(new MigLayout("", "[328px][13px][112px]", "[23px][279px][14px]")); 

好,你可以試着告訴佈局,以填補佈局約束fill,現在你應該告訴至極列(S)和行(S)要長時面板隨着行/列約束grow增長。所以...

contentPane.setLayout(new MigLayout("fill", "[328px, grow][13px][112px]", "[23px][279px, grow][14px]")); 
0

我猜最大尺寸太小,你試圖設置一個比對象的最大尺寸更大的尺寸。嘗試設置最大寬度和最大高度。祝你好運。

+0

我該怎麼做? – 2012-07-19 22:00:57

+0

只需調用JFrame對象的setMaximumSize方法即可。您應該傳遞一個Dimension對象,如下所示:myFrame.setMinimumSize(new Dimension(800,550)); myFrame是您的JFrame對象。 – 2012-07-19 22:06:45

+0

我更新了這篇文章,也沒有工作。 – 2012-07-19 22:08:06

相關問題