java - 将 2 个标签放入 jframe 边框布局的中间

标签 java swing jlabel layout-manager border-layout

我的java代码在中间生成一个标签,在顶部和底部有一个按钮。我希望下面的代码能够生成如下所示的内容。

enter image description here

我只是不知道如何使用此代码 f.add(b2,BorderLayout.CENTER); 在中心添加 2 个标签。因为似乎只有一件元素可以位于中心。我的代码希望两个标签对称且位于中心。

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 使用自己的布局管理器。

创建一个 JPanel 并为其指定一个 1 行、可变列数的 new GridLayout(1, 0)。将 JLabels 添加到此 JPanel,然后将此 JPanel 添加到主容器(使用 BorderLayout 的容器)的 BorderLayout.CENTER 位置。

例如,

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();  
    }  
}

另外:

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

关于java - 将 2 个标签放入 jframe 边框布局的中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61988942/

相关文章:

java - 如何获取新替换字符串的新值?

java - 如何修改Swing在布局文本组件时使用的clip字符串省略号

java - 动态更新当前显示的工具提示

java - 在 JLabel 扩展类中找不到符号

java - 如何在处理中删除先前绘制的 ControlP5 下拉列表

java - session 无法从之前的 session 中找到变量

java - 结合 JXTable 和 RXTable

Java - 如何显示图像?

java - 如何让字符串显示在 jLabel 中?

java - 多核系统中最终收集线程安全吗?