我试图在Java Swing中构建GUI。我在调整组件时遇到了很多麻烦。我设法通过使用setPreferredSize()
设置维度来确定JPanel的大小,但我无法使该JPanel中的组件正确调整大小。
这是我的屏幕,只有JPanel可见。
当我将按钮添加到我的JPanel时,会发生以下情况:
正如您所看到的,该按钮占据了我的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()
。
感谢您的时间!