Jframe帮助使用Boxlayout

时间:2016-05-27 14:52:05

标签: java swing

大家好:D我正试图在有人按下按钮时在G-U-I中放置一个按钮,我能够这样做。但我有一个问题,首先,在我的代码中,似乎框布局不起作用。我的意思是我希望按钮显示在添加命令按钮下方,但它出现在它的右侧(因为流量布局我猜)。 代码 -

static JLabel name=new JLabel("TESTING123");
static JButton add=new JButton("Add New Command");
static JButton a=new JButton("Press Me To Set Command Number 1");
static JPanel panel=new JPanel();
static JFrame frame=new JFrame("TEST FRAME");

public static void init(){



    frame.getContentPane().setBackground(Color.WHITE);
    frame.setLayout(new BoxLayout(frame.getContentPane(),BoxLayout.Y_AXIS));//THIS IS NOT WORKING
    //======================================================SOME FRAME PROPERTIES

    panel.add(name);
    panel.add(add);

    //======================================================ADDING TO PANELS
    add.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            panel.add(a);
            frame.repaint();
            frame.validate();

        }
    });
    //======================================================LISTENERS



    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(panel);
    frame.setSize(450,500);
    frame.setVisible(true);


}

1 个答案:

答案 0 :(得分:3)

  

我的意思是我希望按钮出现在添加命令按钮下方,但它出现在它的右侧

panel.add(a);

JPanel的默认布局是FlowLayout。如果您想要在下面添加组件,则需要将面板的布局更改为BoxLayout。

或者,不是将组件添加到面板,而是可以将其添加到框架的内容窗格中,因为它已经在使用BoxLayout:

frame.add(a);
  

frame.setLayout(new BoxLayout(frame.getContentPane(),BoxLayout.Y_AXIS)); //

更改框架的布局不会影响面板的布局。