Java setBounds not working with JPanel

前端 未结 2 979
忘了有多久
忘了有多久 2020-12-11 06:53

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

相关标签:
2条回答
  • 2020-12-11 07:15

    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.

    0 讨论(0)
  • 2020-12-11 07:27

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

    p.setLayout(null);

    0 讨论(0)
提交回复
热议问题