Java setBounds无法与JPanel一起使用
我在用Java做一个小Gui。我正在使用setBounds方法在JFrame上设置按钮等的位置,但是问题是,当我将JPanel按钮与JFrame一起使用时,在JFrame上不可见,并且如果没有JPanel也可以,请同时阅读代码,并请帮帮我我是初学者,正面临这些愚蠢的问题。
这个很好
JFrame jframe = new JFrame("Working Fine"); jframe.setLayout(null);
JButton jbutton = new JButton("Position Test");
jbutton.setBounds(0, 0, 100, 100);
jframe.add(jbutton);
jframe.setSize(300,300);
jframe.setVisible(true);
当我将按钮添加到Jpanel时,相同的代码不起作用,所以怎么了,请指导我
JFrame jframe = new JFrame("causing problem "); jframe.setSize(300,300);
JPanel p = new JPanel();
jframe.setLayout(null);
JButton jbutton = new JButton("Position Test");
jbutton.setBounds(0, 0, 100, 100);
jframe.add(p);
p.add(jbutton);
p.setVisible(true);
//jframe.add(jbutton);
jframe.setVisible(true);
请帮我解决这个小问题
回答:
问题是,当您使用绝对定位时,JPanel
组件没有默认大小,因此不会出现。要使其出现,您可以做
JFrame frame = new JFrame("No Problem");JPanel panel = new JPanel() {
@Override
public Dimension getPreferredSize() {
return new Dimension(300, 300);
};
};
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
JButton button = new JButton("Position Test");
panel.add(button);
frame.add(panel);
frame.pack();
frame.setVisible(true);
从没有布局管理器的情况开始
尽管没有布局管理器也是可以的,但您应该尽可能使用布局管理器。布局管理器使调整与外观依赖的组件外观,不同的字体大小,容器的变化大小以及不同的语言环境变得更加容易。
布局管理器的选择取决于您希望如何布置组件。
请参阅《布局管理器视觉指南》。
以上是 Java setBounds无法与JPanel一起使用 的全部内容, 来源链接: utcz.com/qa/398365.html