java - JPanel,调整大小的问题

标签 java swing jpanel layout-manager

我是新手。 尝试自动调整边框大小。我用 2 个面板在框架上制作了边框。我将带边框的面板添加到第一个面板中。

我想要从所有边缘撤退的边框。在此边框面板中,我还添加了文本面板和按钮。 当我扩展窗口或调整其大小时,带有边框的面板也会调整大小。但是当我使用 BorderLayout 时,边缘没有缩进。

public class App {
private JFrame frame;
private JPanel panel;
private JPanel panel_1;
private JTextField textField;
private JButton addBtn;

public static void main(String args[]) {
    App app = new App();

    app.initialize();

    app.frame.pack();
    app.frame.setVisible(true);
}

private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 800, 600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    panel = new JPanel();
    frame.getContentPane().add(panel, BorderLayout.NORTH);
    panel.setLayout(new BorderLayout(0, 0));

    panel_1 = new JPanel();
    panel_1.setPreferredSize(new Dimension(784, 40));
    panel_1.setBorder(new LineBorder(new Color(0, 0, 0)));

    panel.add(panel_1, BorderLayout.CENTER);

    textField = new JTextField();
    textField.setPreferredSize(new Dimension(6, 24));
    panel_1.add(textField);
    textField.setColumns(50);

    addBtn = new JButton("Add");
    addBtn.setPreferredSize(new Dimension(70, 24));
    panel_1.add(addBtn);
}

}

这是与 BorderLayout - http://snag.gy/S43C2.jpg 。 我还尝试在面板中使用 FlowLayout - http://snag.gy/ndjDG.jpg

你能帮我吗?

最佳答案

问题是因为您在添加到 BorderLayout.NORTH 的面板上设置了边框。当您调整窗口大小时,BorderLayout.NORTH 部分将仅水平调整大小,这就是边框无法正确调整大小的原因。

public static void main(String args[]) {
    JavaApplication11 app = new JavaApplication11();

    app.initialize();

    app.frame.pack();
    app.frame.setVisible(true);
}

private JFrame frame;
private JPanel panel;
private JTextField textField;
private JButton addBtn;

private void initialize() {
    frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    panel = new JPanel();
    frame.add(panel);

    Border border = new CompoundBorder(new EmptyBorder(5, 10, 15, 20), new LineBorder(Color.BLACK));
    panel.setBorder(border);

    textField = new JTextField(50);
    panel.add(textField);

    addBtn = new JButton("Add");
    panel.add(addBtn);
}

关于java - JPanel,调整大小的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28526143/

相关文章:

java - 为什么 op-assign 运算符在 java 中不是类型安全的?

java - Dockererized Kong 在 Windows 上给出 "An invalid response was received from the upstream server"

java - 如何在Java swing中从另一个类禁用一个类中的多个JButton?

java - 在 JPanel 中插入 JLabel 不会将其置于顶部

java - 定位 JButton 不起作用

java - 确定 FlowLayout 中 JComponent 的直接邻居

java - 为什么让短期和长期对象在垃圾收集中有所不同?

java - 获取搜索容器列的主键

mysql - 在 Hibernate 中使用密码(对于独立应用程序)

java - 设置 Action 监听器并更改背景