1. 程式人生 > 實用技巧 >GUI學習1

GUI學習1

佈局的三種方式

東西南北中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);
    }

效果圖