2014-03-04 26 views
0

我有一组按钮。我的JPanel有一个GridLayout的布局。我希望任何组件都能够在广场之外走向中心。这里是一个图像:http://screencast.com/t/z86ldR9vhGridLayout中心溢出组件

我想选项按钮居中集团下。

在此先感谢!

+0

setLayout(null)=完全自由度:-) – Solace

+0

只是在开玩笑。你有没有考虑使用borderlayout或boxlayout? Gridbaglayout允许元素跨越多个单元格。 – Solace

+1

'GridBagLayout' =完全自由 – MadProgrammer

回答

1

为“选项”按钮创建另一个JPanel并将其设置为流布局。 例如,假设顶部面板被称为“PANEL1”,底部是“是Panel2”:

// create top panel with first four buttons 
JPanel panel1 = new JPanel(new GridLayout(2, 2)); 
panel1.add(new JButton("Play")); 
panel1.add(new JButton("New Game")); 
panel1.add(new JButton("Save Game")); 
panel1.add(new JButton("Load Game")); 

// create bottom panel with "Options" button 
JPanel panel2 = new JPanel(new FlowLayout()); 
panel2.add(new JButton("Options")); 

或者,如果你想为类的完整代码(所有进口):

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JButton; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.GridLayout; 

public class Buttons { 
    public static void main(String[] args) { 
     Buttons gui = new Buttons(); 
    } 

    public Buttons() { 
     // create frame 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(new Dimension(250, 150)); 
     frame.setLayout(new FlowLayout()); 
     frame.setVisible(true); 

     // create top panel with first four buttons 
     JPanel panel1 = new JPanel(new GridLayout(2, 2)); 
     panel1.add(new JButton("Play")); 
     panel1.add(new JButton("New Game")); 
     panel1.add(new JButton("Save Game")); 
     panel1.add(new JButton("Load Game")); 

     // create bottom panel with "Options" button 
     JPanel panel2 = new JPanel(new FlowLayout()); 
     panel2.add(new JButton("Options")); 

     // add panels to frame 
     frame.add(panel1); 
     frame.add(panel2); 
    } 
}