2016-02-24 36 views
0

我已經創建了一個自定義的jdialog,但我希望它有點小。它不應該有空的空間。下面的代碼給了我這樣的:減小jdialog的大小

Gui

如果我減少使用的setSize大小,結果陷入不良的GUI這樣的:

BadGui

class Find extends JDialog 
{ 
    JPanel f1,f2,f3,rp; 
    JLabel fl,filler1,filler2,filler3; 
    JTextField ft,fillert; 
    JCheckBox mcase; 
    JButton fb1,fb2; 
    JRadioButton upr,dr; 
    ButtonGroup rg; 
    public Find() 
    { 
     setTitle("Find"); 

     f3 = new JPanel(); 
     f3.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); 
     f3.setLayout(new GridLayout(3,1)); 

     f1 = new JPanel(); 
     f1.setLayout(new BoxLayout(f1,BoxLayout.X_AXIS)); 
     f2 = new JPanel(); 
     f2.setLayout(new BoxLayout(f2,BoxLayout.X_AXIS)); 

     fl = new JLabel("Find what: "); 
     ft = new JTextField(); 

     fb1 = new JButton(" Find "); 
     mcase = new JCheckBox("Match case",false); 
     fb2 = new JButton("Cancel"); 
     rg = new ButtonGroup(); 
     upr = new JRadioButton("Up"); 
     dr = new JRadioButton("Down"); 
     rg.add(upr); 
     rg.add(dr); 
     rp = new JPanel(); 
     rp.add(upr); 
     rp.add(dr); 

     filler1 = new JLabel(" "); 
     filler2 = new JLabel(" "); 

     f1.add(fl); 
     f1.add(ft); 
     f1.add(filler1); 
     f1.add(fb1); 

     f2.add(mcase); 
     f2.add(rp); 
     //f2.add(filler2); 
     //f2.add(fb2); 

     f3.add(f1); 
     //f3.add(new JLabel()); 
     f3.add(f2); 

     add(f3); 
     setSize(400,120); 
     setAlwaysOnTop(true); 
     setResizable(false); 
     setVisible(true); 
    } 
} 
+0

什麼問題? – F43nd1r

+0

我該怎麼做才能讓JDialog更小,從而消除底部的空白空間? –

回答

1

F3JPanel有3行GridLayout,第三個是空的。

你只需要2個,所以嘗試:

f3.setLayout(new GridLayout(2,1)); 

OR:

變化F3的佈局管理爲垂直BoxLayout

f3.setLayout(new BoxLayout(f3, BoxLayout.Y_AXIS)); 

,降低JDialog的高度:

setSize(400,100); 
+0

這導致更大和笨重的文本框:[見圖片](http://imgur.com/oOlk60b) –

+0

我編輯了另一個建議。 – Berger

0
f3.setLayout(new GridLayout(2,1)); 
ft.setMaximumSize(new Dimension(250,25)); 

上述變化訣竅!

+0

更改佈局參數與問題無關。這些參數只是建議。如果只添加兩個組件,則該空間將在這兩個組件之間均勻分配。你應該做的是使用'pack()'而不是'setSize()'。然後,對話框將顯示所有組件的首選大小,而不是您硬編碼的任意大小。 – camickr