当我将GUI窗口大小增加到完全时,组件将返回到标准布局
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我将GUI窗口大小增加到完全时,组件将返回到标准布局相关的知识,希望对你有一定的参考价值。
当我将窗口大小增加到完整时,我的组件会回到标准布局(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);
答案
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基础知识的示例。
以上是关于当我将GUI窗口大小增加到完全时,组件将返回到标准布局的主要内容,如果未能解决你的问题,请参考以下文章