Когда я увеличу размер окна GUI до полного, компоненты вернутся к стандартной компоновке - PullRequest
0 голосов
/ 12 апреля 2019

Когда я увеличиваю размер окна до полного, мои компоненты возвращаются к стандартной компоновке (jtable, button1, button2, button3) и так далее.поэтому мне интересно, правильный ли мой код и как я могу уменьшить размер окна.

    JTabbedPane jtabbed = new JTabbedPane(JTabbedPane.TOP);


JPanel panel=new JPanel();
tabellinnhold = new DefaultTableModel(defaulttabell,kolonnenavn);
posttabell = new JTable(tabellinnhold);
rullefelt = new JScrollPane(posttabell);

koble = new JButton("koble til");
lukke = new JButton("lukke");
hente = new JButton("Hente data");
avslutt = new JButton("Avslutt");  
panel.add(rullefelt,BorderLayout.CENTER);
panel.add(koble,BorderLayout.SOUTH);
panel.add(lukke,BorderLayout.SOUTH);
panel.add(hente,BorderLayout.SOUTH);
panel.add(avslutt,BorderLayout.SOUTH);
//action listener
koble.addActionListener(this);
lukke.addActionListener(this);
hente.addActionListener(this);
avslutt.addActionListener(this);
jtabbed.add("se post",panel);
add(jtabbed);

////////////////////////////////////////////////////

Grensesnitt p = new Grensesnitt();


p.setDefaultCloseOperation(EXIT_ON_CLOSE);
p.GUIcode();
p.setTitle("title");
p.setSize(500,700);
p.setVisible(true);

1 Ответ

2 голосов
/ 12 апреля 2019
JPanel panel=new JPanel();
...
panel.add(rullefelt,BorderLayout.CENTER);
panel.add(koble,BorderLayout.SOUTH);
panel.add(lukke,BorderLayout.SOUTH);
panel.add(hente,BorderLayout.SOUTH);
panel.add(avslutt,BorderLayout.SOUTH);

Менеджер компоновки по умолчанию для JPanel - FlowLayout, который просто отображает все компоненты в одной строке.

Вы не можете просто использовать ограничения BorderLayout и ожидать, что оно сработает.

Если вы хотите использовать BorderLayout, тогда код должен быть:

//JPanel panel=new JPanel();
JPanel panel=new JPanel( new BorderLayout() );

Кроме того, вы не можете добавить 4 компонента к «ЮГУ» BorderLayout. Вы можете добавить только один компонент. Итак, вам нужно создать дочернюю панель и сначала добавить к ней свои компоненты:

JPanel south = new JPanel();
south.add(koble);
south.add(lukke);
south.add(hente);
south.add(avslutt);
panel.add(south, Borderlayout.SOUTH);

Прочтите раздел из учебника по Swing на Использование Layout Manager для получения дополнительной информации и рабочих примеров для начала работы.

Держите ссылку на учебник под рукой для примеров всех основ Swing.

...