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

回到顶部