所以我做了一个WindowDisp
扩展类JFrame
:
public class WindowDisp extends JFrame{
private static final long serialVersionUID = 3245091489595286109L;
private int height, width;
private JPanel panel;
private JLabel mainPane;
public WindowDisp(int a, int b, int pw, int ph){
height = a;
width = b;
Container c = getContentPane();
c.setPreferredSize(new Dimension(width, height));
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLocationRelativeTo(null);
mainPane = new JLabel();
mainPane.setPreferredSize(new Dimension(pw, ph));
mainPane.setFont(new Font("Monospaced", Font.PLAIN, 10));
panel = new JPanel();
panel.setPreferredSize(getSize());
panel.add(mainPane);
add(panel);
setVisible(true);
pack();
}
public static void main(String[] args){
WindowDisp win = new WindowDisp(400, 400, 400, 400);
}
}
在我的Main
班级中,我声明了一个WindowDisp
where 它的height
andwidth
等于它的ph
and pw
。然而,问题是,在运行我的程序时,白色的“条”出现在JPanel
框架中的默认背景颜色周围。它们似乎从右侧和底部填充面板,就好像框架中没有面板没有占用的空间一样,但是,如果我的编码正确,面板应该与框架的大小相同ContentPane
,如果它不是?
我发现删除这两个pack();
命令中的任何一个都不会删除这些条,尽管删除第一个命令会将它们更改为黑色,而删除第二个命令会使右侧的那个变宽。当然,同时删除它们会导致框架的大小与其ContentPane
. 此外,add(panel);
完全删除没有效果。
我无法弄清楚这段代码中的什么导致我的框架中出现了看似空白的空间,而且,在我的程序中,传递给Window
构造函数的所有四个值都是相等的。看起来很奇怪的是,即使我只是删除add(panel);
,也没有任何改变 vi 的白色填充。事实上,我可以注释掉从mainPane =...
to的所有内容add(panel);
,这根本不会影响它。