java - 不知道如何使用 SetBorder

标签 java swing border jlabel titled-border

我的代码工作正常,因为它做了它应该做的事情,(感谢这个网站的帮助!)但我忘记了一个细节:我的面板周围缺少边框。问题是,我不知道该怎么做,当我为面板分配标签时,它并没有包围所有组件,而是以一种非常奇怪的形式出现。我确实理解为什么会发生这种情况,但我不知道如何解决它以及如何获得我想要的东西。我需要什么:

enter image description here

但我得到的是:

enter image description here

import javax.swing.*;
import javax.swing.border.TitledBorder;

import java.awt.event.*;
import java.awt.*;

public class HW2BorderLayoutSettings extends JFrame {
private JPanel buttonPanel = new JPanel();
private JPanel propertiesPanel = new JPanel();
private JLabel label1 = new JLabel();
private JLabel label2 = new JLabel();
private JButton north = new JButton("North");
private JButton south = new JButton("South");
private JButton west = new JButton("West");
private JButton east = new JButton("East");
private JButton center = new JButton("Center");
private BorderLayout border = new BorderLayout();
private JLabel label = new JLabel("BorderLayout Properties:");
private JLabel hGapLabel = new JLabel("HGap:");
private JLabel vGapLabel = new JLabel("VGap:");
private JTextField hGapField = new JTextField();
private JTextField vGapField = new JTextField();
private GridLayout grid = new GridLayout(2, 2);
private Integer hGapInt;
private Integer vGapInt;

public HW2BorderLayoutSettings() {
    buttonPanel.setLayout(border);
    buttonPanel.add(north, BorderLayout.NORTH);
    buttonPanel.add(center, BorderLayout.CENTER);
    buttonPanel.add(south, BorderLayout.SOUTH);
    buttonPanel.add(west, BorderLayout.WEST);
    buttonPanel.add(east, BorderLayout.EAST);
    propertiesPanel.setLayout(grid);
    propertiesPanel.add(hGapLabel);
    propertiesPanel.add(hGapField);
    propertiesPanel.add(vGapLabel);
    propertiesPanel.add(vGapField);

    add(buttonPanel, BorderLayout.CENTER);
    add(propertiesPanel, BorderLayout.SOUTH);
    buttonPanel.add(label1);
    propertiesPanel.add(label2);

    label1.setHorizontalAlignment(JLabel.LEFT);
    label2.setHorizontalAlignment(JLabel.LEFT);
    TitledBorder titled1 = new TitledBorder("Container");
    label1.setBorder(titled1);
    TitledBorder titled2 = new TitledBorder("Properties");
    label2.setBorder(titled2);


    hGapField.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            hGapInt = Integer.parseInt(hGapField.getText());
            border.setHgap(hGapInt);
            setSize((int) (getWidth() + hGapInt), getHeight());
            validate();
        }
    });

    vGapField.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            vGapInt = Integer.parseInt(vGapField.getText());
            border.setVgap(vGapInt);
            setSize(getWidth(), (int) (getHeight() + vGapInt));
            validate();
        }
    });
}

public static void main(String[] args) {
    HW2BorderLayoutSettings borderDemo = new HW2BorderLayoutSettings();
    borderDemo.setTitle("Border Layout");
    borderDemo.setSize(400, 400);
    borderDemo.setLocationRelativeTo(null);
    borderDemo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    borderDemo.setVisible(true);

}
}

最佳答案

啊没关系,我把这么简单的事情复杂化了!不需要标签或新面板,只需要为现有面板添加边框!

TitledBorder titled1 = new TitledBorder("Container");
buttonPanel.setBorder(titled1);
TitledBorder titled2 = new TitledBorder("Properties");
propertiesPanel.setBorder(titled2);

关于java - 不知道如何使用 SetBorder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33350895/

相关文章:

Java JLayeredPane 不显示它的元素

java - Jframe 顶部的 Facebook 蓝色背景

JavaFX 节点部分边框

vb.net - 如何将自定义边框添加到 FormBorderStyle=None - 表单?

java - 将 png 文件绘制到 swing GUI 中时出现问题

java - 将 JSP 呈现为字符串

java - 无法在 Liferay Portlet 中部署具有 Elasticsearch 依赖项的 war

java - 使用 Java 创建并连接到 SQL 数据库

java - 如何使用glassPane创建透明窗口?

html - 删除页内链接周围的边框