Java大小调整JPanel& JPanel组件

时间:2016-12-11 13:11:24

标签: java swing

我试图在Java Swing中构建GUI。我在调整组件时遇到了很多麻烦。我设法通过使用setPreferredSize()设置维度来确定JPanel的大小,但我无法使该JPanel中的组件正确调整大小。

这是我的屏幕,只有JPanel可见。

enter image description here

当我将按钮添加到我的JPanel时,会发生以下情况:

enter image description here

正如您所看到的,该按钮占据了我的JPanel / JFrame的整个长度和宽度。为什么会这样?我该如何解决?

这是我的代码:

Application.java

public void start() {
    ControllerObserveer observeer = new ControllerObserveer();

    frame = new JFrame("-");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
    frame.setLayout(new BorderLayout());
    frame.add(observeer.getView(), BorderLayout.CENTER);
    frame.setResizable(false);
}

ControllerObserveer.java

public class ControllerObserveer {
    private ModelObserveer model;
    private ViewObserveer view; 

    public JPanel getView(){
        return this.view.p;
    }
}

ViewObserveer.java

public class ViewObserveer {

    public JPanel p;

    public ViewObserveer(){
        this.p = new JPanel(new BorderLayout(), false);
        p.setPreferredSize(new Dimension(500, 500));
        p.setBackground(Color.red);

        JButton b = new JButton("Hello World!");
        b.setPreferredSize(new Dimension(40, 40));

        p.add(b);

    }
}

最后,我想问一下不同布局之间的差异,例如BorderLayout()BoxLayout()

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

在Eclipse上安装Java WindowBuilder。所以,你可以完成任务......“但我无法让JPanel中的组件正确调整大小。”

enter image description here