Java 为什么我的JPanel比它应该的小?
我正在尝试学习Swing,并制作了一个面板(在其他StackOverflow代码的帮助下)。我在一个框架上添加了一个棋盘格设计,但是我发现这个框架没有它应该的那么大 这是我的密码:Java 为什么我的JPanel比它应该的小?,java,swing,Java,Swing,我正在尝试学习Swing,并制作了一个面板(在其他StackOverflow代码的帮助下)。我在一个框架上添加了一个棋盘格设计,但是我发现这个框架没有它应该的那么大 这是我的密码: @Override protected void paintComponent(Graphics g) { int width = getWidth(), height = getHeight(); g.clearRect(0, 0, width, height);
@Override
protected void paintComponent(Graphics g) {
int width = getWidth(), height = getHeight();
g.clearRect(0, 0, width, height);
g.setColor(Color.BLACK);
for (int i=0;i<=width;i+=50) {
g.drawLine(0,i,width,i);
}
for (int i=0;i<=height;i+=50) {
g.drawLine(i,0,i,height);
}
label.setText("H = "+ getHeight() +" W = "+ getWidth()); // check actual size
add(label);
}
private void gui(Pan window) {
frame = new JFrame();
Container container = frame.getContentPane();
container.add(window);
frame.setSize(400, 400); // size written here
frame.setVisible(true);
}
@覆盖
受保护组件(图形g){
int width=getWidth(),height=getHeight();
g、 clearRect(0,0,宽度,高度);
g、 设置颜色(颜色为黑色);
对于(int i=0;i
它将是362乘384,而不是400乘400
因为框架的大小包括标题栏和边框。请不要使用setSize()方法
而是重写自定义面板的getPreferredSize()
方法,以返回您希望面板的大小
然后使用:
frame.pack();
然后,框架的大小将是面板的首选大小,加上标题栏和边框的大小
它将是362乘384,而不是400乘400
因为框架的大小包括标题栏和边框。请不要使用setSize()方法
而是重写自定义面板的getPreferredSize()
方法,以返回您希望面板的大小
然后使用:
frame.pack();
然后,框架的大小将是面板的首选大小,加上标题栏和边框的大小。Java为边框添加插图。请参阅Java为边框添加插图。请参阅覆盖GetPreferedSize()
效果很好!返回400 x 400的维度会使窗口大小正确。但是,如果我添加setresizeable(false)
,它将变为410 x 410。思考?@Chronicle,setresizeable()应该在打包帧之前完成。帧仍然假定可调整大小的边框的边框为5像素。由于没有边框,额外的空间将分配给面板。覆盖getPreferedSize()
效果很好!返回400 x 400的尺寸将使窗口大小正确。但是,如果添加setResizeable(false)
,它将由410变为410。在打包帧之前,应先完成Thinks?@Chronicle,setResizeable()。帧仍假定可调整大小的边框为5像素的边框。由于没有边框,因此额外的空间将分配给面板。