i am doing a small Gui in java. i am using setBounds methods to set the position of buttons etc on my JFrame , but problem is that when i use it with JPanel button is not visible on JFrame , and without JPanel its quite ok ,, see both the codes and please help me as i am beginner and facing these foolish problems .

This one is working fine

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);

Same code when i add Button to Jpanel then it does not work so whats wrong , please guide me

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);

please help me in this small problem

解决方案

The problem is that when you use absolute positioning, the JPanel component has no default size so does not appear. To get it to appear you could do

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);

Although it is possible to do without a layout manager, you should use a layout manager if at all possible. A layout manager makes it easier to adjust to look-and-feel-dependent component appearances, to different font sizes, to a container's changing size, and to different locales.

The choice of layout manager will depend on how you wish to lay out the components.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐