2014-03-04 34 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); 
    } 
}