GUI學習1
阿新 • • 發佈:2020-11-16
佈局的三種方式
東西南北中BorderLayout
佈局可設定東(EAST)、西(WEST)、南(SOUTH)、北(NORTH)、中(CENTER)
- 效果圖
-
程式碼
public static void main(String[] args) { Frame frame = new Frame("MyFrame"); frame.setBounds(100, 100, 500,500); //設定流式佈局 frame.setLayout(new BorderLayout()); Button button1 = new Button("button1"); Button button2 = new Button("button2"); Button button3 = new Button("button3"); Button button4 = new Button("button4"); Button button5 = new Button("button5"); frame.add(button1, BorderLayout.EAST); frame.add(button2, BorderLayout.WEST); frame.add(button3, BorderLayout.SOUTH); frame.add(button4, BorderLayout.NORTH); frame.add(button5, BorderLayout.CENTER); frame.setVisible(true); }
流式佈局FlowLayout
流式佈局可設定左(FlowLayout.LEFT)、中(FlowLayout.CENTER)、右(FlowLayout.RIGHT)
- 效果圖:
程式碼:
public static void main(String[] args) { Frame frame = new Frame("MyFrame"); frame.setBounds(100, 100, 500,500); //設定流式佈局 frame.setLayout(new FlowLayout(FlowLayout.LEFT)); Button button1 = new Button("button1"); Button button2 = new Button("button2"); Button button3 = new Button("button3"); frame.add(button1); frame.add(button2); frame.add(button3); frame.setVisible(true); }
表格佈局GridLayout
- 效果圖:
-
程式碼
public static void main(String[] args) { Frame frame = new Frame("MyFrame"); frame.setBounds(100, 100, 500,500); //設定流式佈局 frame.setLayout(new GridLayout(2, 3)); Button button1 = new Button("button1"); Button button2 = new Button("button2"); Button button3 = new Button("button3"); Button button4 = new Button("button4"); Button button5 = new Button("button5"); Button button6 = new Button("button6"); frame.add(button1); frame.add(button2); frame.add(button3); frame.add(button4); frame.add(button5); frame.add(button6); frame.setVisible(true); }
使用三種方式完成以下效果
思路分析
- 複雜佈局用Panel進行分割
- 把目標檢視分成上下兩組
- 上半部分左右中+表格
- 下半部分左右中+表格
程式碼
public static void main(String[] args) {
Frame frame = new Frame("MyFrame");
frame.setBounds(100, 100, 500,500);
//設定流式佈局
frame.setLayout(new GridLayout(2, 1));
Panel panel_top = new Panel();
Panel panel_bottom = new Panel();
frame.add(panel_top);
frame.add(panel_bottom);
panel_top.setLayout(new BorderLayout());
panel_bottom.setLayout(new BorderLayout());
//上半部分控制元件
Button button_left = new Button("top_left");
Panel panel_center = new Panel();
Button button_right = new Button("top_right");
//上半部分整體佈局
panel_top.add(button_left, BorderLayout.WEST);
panel_top.add(button_right, BorderLayout.EAST);
panel_top.add(panel_center, BorderLayout.CENTER);
//上半部分中間佈局
panel_center.setLayout(new GridLayout(2,1));
Button button_center_top = new Button("center_top");
Button button_center_bottom = new Button("center_bottom");
panel_center.add(button_center_top);
panel_center.add(button_center_bottom);
//下半部分控制元件
Button b_button_left = new Button("top_left");
Panel b_panel_center = new Panel();
Button b_button_right = new Button("top_right");
panel_bottom.add(b_button_left, BorderLayout.WEST);
panel_bottom.add(b_button_right, BorderLayout.EAST);
panel_bottom.add(b_panel_center, BorderLayout.CENTER);
//上半部分中間佈局
b_panel_center.setLayout(new GridLayout(2,2));
Button b_button_center_1 = new Button("b_button_center_1");
Button b_button_center_2 = new Button("b_button_center_2");
Button b_button_center_3 = new Button("b_button_center_3");
Button b_button_center_4 = new Button("b_button_center_4");
b_panel_center.add(b_button_center_1);
b_panel_center.add(b_button_center_2);
b_panel_center.add(b_button_center_3);
b_panel_center.add(b_button_center_4);
frame.setVisible(true);
}