我在设置绘图面板的大小时遇到问题。我想要一个尺寸为0,600,600的绘图板。但是我发现,绘图板的尺寸小于600,600。看起来框架尺寸为600,600,这使得绘图面板更小。如何设置绘图面板尺寸600,600?
....
public class DrawingBoardWithMatrix extends JFrame {
public static void main(String[] args) {
new DrawingBoardWithMatrix();
}
public DrawingBoardWithMatrix(){
this.getContentPane().setBackground(Color.WHITE);
this.setSize(600, 600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(new PaintSurface(), BorderLayout.CENTER);
this.setVisible(true);
setResizable(false);
}
我已经更改了代码,但问题仍然存在。 此时,绘图面板的尺寸大于预期的尺寸尺寸。
public class DrawingBoardWithMatrix extends JFrame {
public static void main(String[] args) {
new DrawingBoardWithMatrix();
}
public DrawingBoardWithMatrix(){
Container c = getContentPane();
c.add(new PaintSurface(), BorderLayout.CENTER);
c.setPreferredSize(new Dimension(600,600));
pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
}
答案 0 :(得分:3)
原因是为“插入”保留了一些空间,例如边框。要知道需要多少额外空间,请使用框架“getInsets()
”。
答案 1 :(得分:2)
将组件的首选大小设置为600,600,并在框架上调用pack()。
答案 2 :(得分:0)
按照NawaMan的建议进行操作,并考虑插图,或将“PaintSurface”对象的大小设置为600x600。当然,您可能需要滚动窗格才能获得完整尺寸。
答案 3 :(得分:0)
问题已解决
public DrawingBoardWithMatrix(){
Container c = getContentPane();
c.add(new PaintSurface(), BorderLayout.CENTER);
setResizable(false); //put the code setResizable(false) before pack();
pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public PaintSurface() {
this.setPreferredSize(new Dimension (600,600));
.....
}