2016-02-24 6 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 имеет GridLayout с 3 рядами, а третий - пустым.

Вам нужно только 2, так что попробуйте:

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

ИЛИ:

Измените LayoutManager из 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

 Смежные вопросы

  • Нет связанных вопросов^_^