2013年1月17日 星期四

JAVA GUI GridBagConstraints

在設計GUI的程式時

首要的工作就是排版

JAVA有許多的排版樣式

在此我們使用的是 GridBagLayout

特點是排版的樣式就像是棋盤格子一樣

首先我們要先對排版樣式做一些設定

於程式開始時宣告框架
private JFrame frame;

並在建構子的地方建立框架
frame = new JFrame();

主程式的部分設定框架的屬性

        frame.setSize(600, 160);
        frame.setLayout(new GridBagLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


接下來我們要加入元件到視窗中

假設我們要加入的是Label

那麼我們可以這樣寫


        JLabel n0 = new JLabel(name[0]);
        GridBagConstraints c0 = new GridBagConstraints();
        c0.gridx = 0;
        c0.gridy = 0;
        c0.gridwidth = 1;
        c0.gridheight = 1;
        c0.weightx = 0;
        c0.weighty = 0;
        c0.fill = GridBagConstraints.NONE;
        c0.anchor = GridBagConstraints.WEST;
        frame.add(n0, c0);

這裡我們分成三個部份看

首先是宣告Label物件

於是我們寫

JLabel n0 = new JLabel(name[0]);

第二部分是定義排版規則


        GridBagConstraints c0 = new GridBagConstraints();
        c0.gridx = 0;
        c0.gridy = 0;
        c0.gridwidth = 1;
        c0.gridheight = 1;
        c0.weightx = 0;
        c0.weighty = 0;
        c0.fill = GridBagConstraints.NONE;
        c0.anchor = GridBagConstraints.WEST;

最後一部分是將物件加入框架中

        frame.add(n0, c0);

第一個參數欄位是要加入的元件, 第二個欄位是他的排版規則



排版規則可以重複使用

例如如果要批次的加入按鈕的話

可以這樣寫


for (int i = 0; i < 7; i++) {
            JButton n5 = new JButton(name[i + 3]);
            GridBagConstraints c5 = new GridBagConstraints();
            c5.gridx = i;
            c5.gridy = 2;
            c5.gridwidth = 1;
            c5.gridheight = 1;
            c5.weightx = 0;
            c5.weighty = 0;
            c5.fill = GridBagConstraints.BOTH;
            c5.anchor = GridBagConstraints.CENTER;
            frame.add(n5, c5);
        }

這樣子就可以重複使用c5 這個規則了

Note 到這邊

謝謝大家



沒有留言:

張貼留言