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

Java 当我将GUI窗口大小增加到最大时,组件将返回到标准布局,java,swing,jtable,layout-manager,jtabbedpane,Java,Swing,Jtable,Layout Manager,Jtabbedpane,当我将窗口大小增加到满时,我的组件将返回到标准布局(jtable、button1、button2、button3)等等。因此,我想知道我的代码是否正确,以及如何减小窗口大小 JTabbedPane jtabbed = new JTabbedPane(JTabbedPane.TOP); JPanel panel=new JPanel(); tabellinnhold = new DefaultTableModel(defaulttabell,kolonnenavn); posttabe

当我将窗口大小增加到满时,我的组件将返回到标准布局(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的默认布局管理器是一个
FlowLayout
,它将简单地在一行上显示所有组件

您不能仅仅使用
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教程中的部分,以获取更多信息和工作示例,帮助您入门


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

1)要更快获得更好的帮助,请添加或。2) 以最小尺寸提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则提供更大的宽度和高度,以显示应如何使用额外的空间。3) 使用缩进代码行和代码块的逻辑和一致形式。缩进的目的是使代码的流程更易于遵循!大多数IDE都有专门用于格式化代码的键盘快捷键。4) 源代码中的一行空白就是全部。。。。这是永远需要的。
{
之后或
}
之前的空行通常也是多余的。5) 请学习常见的Java命名法(命名约定-例如
EachWordUpperCaseClass
firstWordLowerCaseMethod()
firstWordLowerCaseAttribute
,除非它是
大写常量
),并一致使用它。6)
p.setSize(500700)是一种猜测。所需的实际尺寸由
p.pack()
@Beefy\u Carrot给出,很高兴它起到了作用。不要忘记点击复选标记“接受”答案,这样人们就知道问题已经解决了。
JPanel south = new JPanel();
south.add(koble);
south.add(lukke);
south.add(hente);
south.add(avslutt);
panel.add(south, Borderlayout.SOUTH);