JPanel,调整大小的问题

时间:2015-02-15 12:43:00

标签: 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

你能帮我吗?

2 个答案:

答案 0 :(得分:3)

问题在于,因为您在添加到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);
}

答案 1 :(得分:3)

我假设这是您尝试创建的GUI。

GUI Image

要创建此GUI,您需要使用多个具有多个Swing布局管理器的JPanel。

这里是我将使用的Swing组件的层次结构。

JFrame - border layout
   JPanel - main panel, border layout
       JPanel - text, button panel, border layout, border north
           JTextField - border center
           JButton - border east
       JScrollPane - border center
           JTable
       JPanel - button panel, flow layout, border south
           JButton (3)

通过在JPanels和JScrollPane上设置空边框来获得间距。空边框可以宽到你想要的宽度。

相关问题