Java setBounds not working with JPanel

穿精又带淫゛_ 提交于 2019-11-29 11:31:27

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

From Doing Without a Layout Manager

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.

See A Visual Guide to Layout Managers.

user2461996

You must get rid of the JPanel's layout, in order to set absolute positions:

p.setLayout(null);

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!