这就是我的代码目前的样子:
public TestFrame(){
setSize(x1, y1); /*where these are already defined*/
setLayout(new FlowLayout());
JLabel label = new JLabel("text");
label.setBorders(BorderFactory.createLineBorder(Color.BLUE));
label.setFont(new Font("Times New Roman", PLAIN, 14));
label.setSize(width, height);
label.setLocation(x, y)
/* where these four variables are already defined */
JButton testButton = new JButton("TestButton");
testButton.setSize(bwidth, bheight);
testButton.setLocation(bx, by);
add(label);
setVisible(true);
}
这主要是给我一个问题,因为这是一个FlowLayout,它将TestFrame的大小设置为最小,并且不会将标签或按钮放在正确的大小或位置。 有人告诉我,我需要将布局设置为null,如下所示:
setLayout(null);
这里的主要问题是,虽然这确实将按钮放在应该的位置,但它不会自动将TestFrame的大小设置为指定的大小,并且当标签可见时,显示正确的字体和大小所述字体,围绕整个文本的边框,将布局设置为null使标签完全消失。
是否有完全消失的解释?我该如何解决这个问题?
答案 0 :(得分:0)
尝试用setBounds(x,y,width,height)替换setSize和setLocation; null布局非常奇怪,我建议你使用LayoutManagers。
答案 1 :(得分:0)
因为这是一个FlowLayout,它将TestFrame的大小设置为最小值
不,FlowLayout会尊重每个组件的首选大小。
不会将标签或按钮放在正确的尺寸或位置。
这是因为您的代码结构错误。您正在使用setSize(...)方法,这意味着布局管理员无法正常工作。
代码的基本结构应该是:
setLayout( new FlowLayout() );
...
add(label);
...
add(button);
pack(); // this will invoke the layout managers and size the frame correctly.
setVisible(true);