Java 在jframe边框布局的中间放置两个标签

Java 在jframe边框布局的中间放置两个标签,java,swing,jlabel,layout-manager,border-layout,Java,Swing,Jlabel,Layout Manager,Border Layout,我的java代码在中间产生一个标签,上面和底部有一个按钮。我希望下面的代码生成类似于此的内容 我只是不知道如何用代码f向中心添加两个标签。因为看起来只有一件物品可以放在中间。我的代码希望两个标签在中心对称 import java.awt.*; import java.io.IOException; import javax.swing.*; public class may2 { Frame f; JLabel b2=new JLabel("");; may

我的java代码在中间产生一个标签,上面和底部有一个按钮。我希望下面的代码生成类似于此的内容

我只是不知道如何用代码f向中心添加两个标签。因为看起来只有一件物品可以放在中间。我的代码希望两个标签在中心对称

import java.awt.*;
import java.io.IOException;
import javax.swing.*;

public class may2 {
    Frame f;  
    JLabel b2=new JLabel("");;  

    may2() throws IOException{ 
        f=new JFrame();  
        JButton b1 = new JButton("First");
        JButton b3 = new JButton("Second");
        f.add(b1,BorderLayout.NORTH); 
        f.add(b2,BorderLayout.CENTER);  
        f.add(b3,BorderLayout.SOUTH); 
        f.setSize(400,500);  
        f.setVisible(true);  
    }

    public static void main(String[] args) throws IOException {  
        new may2();  
    }  

}

关键:嵌套JPanel,每个都使用自己的布局管理器

创建一个JPanel,并为它提供一个
新的GridLayout(1,0)
,用于1行、可变列数。将JLabel添加到此JPanel,然后将此JPanel添加到使用BorderLayout的主容器的BorderLayout.CENTER位置

e、 g

此外:

  • 类名应以大写字母开头,以遵循Java约定。这将使其他人更容易阅读您的代码
  • 避免设置JPanel的大小,而是在添加所有组件后并在设置其可见之前对其调用
    pack()
    。这将告诉布局管理器和组件根据其首选尺寸重新调整组件的尺寸

一行两列。-实际上,这是一行(尝试添加第三个组件)。只有输入所需的行或列(另一个值应为0)才有意义。如果同时输入这两个值,则使用行值。@camickr:谢谢您提供的信息。我对答案进行了编辑,以反映你所说的内容。
import java.awt.*;
import java.io.IOException;
import javax.swing.*;

public class May2b {
    Frame f;  
    JLabel label1 = new JLabel("Label 1");  
    JLabel label2 = new JLabel("Label 2");  

    May2b() throws IOException{ 
        JPanel centerPanel = new JPanel(new GridLayout(1, 0));
        centerPanel.add(label1);
        centerPanel.add(label2);

        f = new JFrame();  
        JButton b1 = new JButton("First");
        JButton b3 = new JButton("Second");
        f.add(b1,BorderLayout.NORTH); 
        f.add(centerPanel, BorderLayout.CENTER);  
        f.add(b3,BorderLayout.SOUTH); 

        f.pack();
        // f.setSize(400,500);  

        f.setVisible(true);  
    }

    public static void main(String[] args) throws IOException {  
        new May2b();  
    }  
}