java - 如何使用 BorderLayout 排列组件?

标签 java swing jpanel layout-manager border-layout

我正在尝试让我的 GUI 显示如下:

Grocery Cart [Refill]
    (TextArea)

我目前正在使用 BorderLayout,我想坚持使用它。如何在同一 JPanel 中获取 JLabelJButton 下方的文本区域?这是我针对特定区域的代码:

如何在两个并排的下方添加文本框?每当我添加它时,它就在它们旁边。

JPanel newPanel = new JPanel();

JLabel label = new JLabel("Grocery Cart");
label.setFont(new Font("Arial", Font.BOLD, 20));
newPanel.add(label);
contentPane.add(newPanel, BorderLayout.WEST)        ;
JButton btnNewButton = new JButton("Refill");
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnNewButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
    }
});
newPanel.add(btnNewButton);

最佳答案

如果我的理解是正确的,这是你需要做的:

    JPanel mainPanel = new JPanel(new BorderLayout());
    JPanel eastPanel = new JPanel(new BorderLayout());
    JTextArea area = new JTextArea("Test content");
    JLabel label = new JLabel("Grocery Cart");
    label.setFont(new Font("Arial", Font.BOLD, 20));

    mainPanel.add(label, BorderLayout.WEST);

    JButton btnNewButton = new JButton("Refill");
    btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 20));
    btnNewButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
        }
    });

    eastPanel.add(btnNewButton, BorderLayout.WEST);
    eastPanel.add(area, BorderLayout.CENTER);

    mainPanel.add(eastPanel, BorderLayout.CENTER);

    contentPane.add(mainPanel, BorderLayout.NORTH);

主要思想是,为了使用简单的布局类型(例如边框和流线)构建复杂的布局,您必须使用容器层次结构并结合流线和边框布局来发挥创意。

在我的示例中,标签和按钮不可调整大小,并且它们的宽度始终等于它们的首选宽度。然而,文本区域可以调整大小并占用其容器的剩余宽度。

请注意,所有添加到 mainPanel 的组件都可以垂直调整大小。为了将 mainPanel 保持在其首选高度,您将其放置到 contentPane 的 BorderLayout.NORTH 或 SOUTH。

关于java - 如何使用 BorderLayout 排列组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393806/

相关文章:

java - 如何解析Java Swing文本框中输入的磁条卡数据?

java - 从外部类更改 TabbedPane 索引

java - JPanel 看起来比设置分辨率大两倍

java - 如何更改 JLabel 的位置?

java - 如何让JPanel的长宽自动伸缩?

java - Android 通知无法访问接收到的字符串

java - 安装后 Hadoop 示例无法运行

java - 按方面禁用方法的实际调用

java - 为什么 Scanner 类对象需要关闭而 string 类对象不能?

java - Swing 和 JavaFX : how to convert JavaFX MouseEvent to Swing MouseEvent?