在使用Group Layout的時候,必須去計算物件的水平與垂直相對位置,
以下圖為範例,有4個Jlabel與4個JTextField。

首先設定水平群組:
在同一個水平線上,我們有兩個元件。
分別是1個Jlabel與1個JTextField,而每一個水平群組中,
各有4個Jlabel(lbl1,lbl2,lbl3,lbl4)與JTextField(tf1,tf2,tf3,tf4)。
所以可以撰寫程式碼如下:
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(lbl1)
.addComponent(lbl2)
.addComponent(lbl3)
.addComponent(lbl4))
.addGroup(layout.createParallelGroup()
.addComponent(tf1)
.addComponent(tf2)
.addComponent(tf3)
.addComponent(tf4))
);
其次我們設定垂直群組:
共有4個垂直群組,每個垂直群組各有一個Jlabel與JTextField。
所以可以撰寫程式碼如下:
layout.setVerticalGroup(layout.createSequentialGroup()
.addGap(10)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lbl1)
.addComponent(tf1))
.addGap(10)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lbl2)
.addComponent(tf2))
.addGap(10)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lbl3)
.addComponent(tf3))
.addGap(10)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lbl4)
.addComponent(tf4))
.addGap(10)
);
package SwingDemo;
import java.awt.BorderLayout;
import javax.swing.GroupLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/***
*
* @author Duran
*
* GroupLayout Demo
*
*/
public class GroupLayoutDemo {
private static JFrame frame;
public static void main(String[] args) {
frame = new JFrame("Group Layout Demo");
frame.setSize(200, 170);
frame.setResizable(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
GroupLayout layout = new GroupLayout(panel);
panel.setLayout(layout);
layout.setAutoCreateGaps(true);
layout.setAutoCreateContainerGaps(true);
JLabel lbl1 = new JLabel("lbl1");
JLabel lbl2 = new JLabel("lbl2");
JLabel lbl3 = new JLabel("lbl3");
JLabel lbl4 = new JLabel("lbl4");
JTextField tf1 = new JTextField();
JTextField tf2 = new JTextField();
JTextField tf3 = new JTextField();
JTextField tf4 = new JTextField();
//group layout
layout.setHorizontalGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(lbl1)
.addComponent(lbl2)
.addComponent(lbl3)
.addComponent(lbl4))
.addGroup(layout.createParallelGroup()
.addComponent(tf1)
.addComponent(tf2)
.addComponent(tf3)
.addComponent(tf4))
);
layout.setVerticalGroup(layout.createSequentialGroup()
.addGap(10)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lbl1)
.addComponent(tf1))
.addGap(10)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lbl2)
.addComponent(tf2))
.addGap(10)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lbl3)
.addComponent(tf3))
.addGap(10)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lbl4)
.addComponent(tf4))
.addGap(10)
);
//BorderLayout
frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.setVisible(true);
}
}
Demo






0 留言