2015-11-17 136 views
0
private void initGui() { 
    JFrame frame = new JFrame(); 
    JPanel panel=new JPanel(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.add(displaySystem); 
    frame.add(panel,BorderLayout.SOUTH); 
    JButton button = new JButton("Press me "); 
    JSlider slider = new JSlider(JSlider.HORIZONTAL,0, 100, 10); 
    frame.add(button,BorderLayout.SOUTH); 
    button.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
    synchronized(cells){ 
      reset(); 
    } 
     }    
    }); 
    frame.pack(); 
    frame.setVisible(true); 
} 

這是我目前的代碼,我想在按鈕下面添加3個滑塊,我似乎無法使用BorderLayout來完成此操作。如果我在frame.add(button,BorderLayout.SOUTH)之後frame.add(slider,BorderLayout.SOUTH),它會導致按鈕被遮蓋。有沒有一種方法可以讓我在南部地區連續放置,並且所有與框架寬度相同的按鈕/滑塊?JFrame佈局添加

回答

0

使用Swing BoxLayout。 請參閱以下代碼:

private void initGui() { 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    frame.getContentPane().add(createRootPanel()); 

    frame.pack(); 
    frame.setVisible(true); 
} 

private JPanel createRootPanel() { 
    JPanel panel = new JPanel(); 
    panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS)); 

    JButton button = new JButton("Press me "); 
    JSlider slider1 = new JSlider(JSlider.HORIZONTAL, 0, 100, 10); 
    JSlider slider2 = new JSlider(JSlider.HORIZONTAL, 0, 100, 10); 
    JSlider slider3 = new JSlider(JSlider.HORIZONTAL, 0, 100, 10); 

    panel.add(button); 
    panel.add(Box.createRigidArea(new Dimension(0,5))); 
    panel.add(slider1); 
    panel.add(Box.createRigidArea(new Dimension(0,5))); 
    panel.add(slider2); 
    panel.add(Box.createRigidArea(new Dimension(0,5))); 
    panel.add(slider3); 

    return panel; 
}