Java setBounds not working with JPanel

前端 未结 2 994
忘了有多久
忘了有多久 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.

提交回复
热议问题