当我将GUI窗口大小增加到完全时,组件将返回到标准布局

问题描述 投票:-1回答:1

当我将窗口大小增加到完整时,我的组件会回到标准布局(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);
java swing jtable layout-manager jtabbedpane
1个回答
2
投票
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的“SOUTH”。您只能添加单个组件。因此,您需要创建一个子面板并将组件添加到第一个:

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

阅读Using Layout Manager上Swing教程中的部分,了解更多信息和工作示例,以帮助您入门。

保留指向教程的链接,以获取所有Swing基础知识的示例。

© www.soinside.com 2019 - 2024. All rights reserved.