java-GUI编程-Frame、Panel、布局

Frame

  • 一个界面容器,属于java.awt包
  • 属于比较古老的编程,绝大多数情况下不会使用,但是对MVC有一定的启发作用

第一个GUI窗口界面

import java.awt.*;

//GUI的第一个界面
public class TestFrame {
    public static void main(String[] args) {
        //Frame 对于一个新的类学会查看源码而不是查看API会对自己有更大提升。
        Frame frame = new Frame("我的第一个GUI窗口");

        //设置可见性
        frame.setVisible(true);
        //设置窗口大小
        frame.setSize(400,400);
        //设置背景颜色 color
        frame.setBackground(new Color(245, 245, 245, 255));
        //设置窗口初始位置
        frame.setLocation(200,200);
        //设置窗口大小不可变
        frame.setResizable(false);
    }
}

 

import java.awt.*;

public class TestFrame2 {
    public static void main(String[] args) {
        //展示多个窗口
        MyFrame myFrame = new MyFrame(100, 100, 300, 300, Color.black);
        MyFrame myFrame2 = new MyFrame(400, 100, 300, 300, Color.blue);
        MyFrame myFrame3 = new MyFrame(100, 400, 300, 300, Color.cyan);
        MyFrame myFrame4 = new MyFrame(400, 400, 300, 300, Color.red);
    }

}
class MyFrame extends Frame {
    static int id=0;//可能会有多个窗口用于计数。
    public MyFrame(int x,int y,int h,int w,Color color){
        super("MyFrame"+(++id));
        setBackground(color);
        setBounds(x,y,h,w);
        setVisible(true);

    }

}

Panel

frame容器中的一个面板,个frame基本一样但是不能单独存在,需要依托Panel而存在。

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//Panel 可以看成一个空间 但是不能单独存在
public class TestPanel {
    public static void main(String[] args) {
        Frame frame = new Frame("JPanel");
        Panel panel = new Panel();
        //设置布局
        frame.setLayout(null);
        //frame坐标,背景颜色
        frame.setBounds(300,300,500,500);
        frame.setBackground(new Color(18, 149, 159));
        //panel坐标,背景颜色
        panel.setBounds(50,50,400,400);
        panel.setBackground(new Color(171, 11, 132));
        //add方法
        frame.add(panel);

        frame.setVisible(true);

        //监听事件,监听关闭事件 System.exit(0);
        //适配器模式:
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

 流式布局

 

import java.awt.*;

public class TestFlowLayout {
    public static void main(String[] args) {
        Frame frame = new Frame();

        //创建按钮
        Button button1 = new Button("button1");
        Button button2 = new Button("button2");
        Button button3 = new Button("button3");
        //设置为流式布局
        frame.setLayout(new FlowLayout());

        frame.setSize(333,333);
        //添加按钮
        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.setVisible(true);
    }
}

Border布局

import java.awt.*;

public class TestBorderLayout {
    public static void main(String[] args) {
        Frame frame = new Frame("TestBorderLayout");

        Button east = new Button("East");
        Button west = new Button("West");
        Button south = new Button("South");
        Button north = new Button("North");
        Button center = new Button("Center");

        frame.add(east,BorderLayout.EAST);
        frame.add(west,BorderLayout.WEST);
        frame.add(south,BorderLayout.SOUTH);
        frame.add(north,BorderLayout.NORTH);
        frame.add(center,BorderLayout.CENTER);
        frame.setSize(200,200);
        frame.setVisible(true);
    }
}

表格布局 Grid

import java.awt.*;

public class TestGridLayout {
    public static void main(String[] args) {
        Frame frame = new Frame();
        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.setLayout(new GridLayout(3,2));

        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.add(button4);
        frame.add(button5);
        frame.add(button6);

        frame.setVisible(true);
        frame.pack();//自动设置最优大小
    }
}

案例

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestNestedLayout {
    public static void main(String[] args) {
        Frame frame = new Frame("嵌套布局");
        Button button1 = new Button("button");
        Button button2 = new Button("button");
        Button button3 = new Button("button");
        Button button4 = new Button("button");
        Button button5 = new Button("button");
        Button button6 = new Button("button");
        Button button7 = new Button("button");
        Button button8 = new Button("button");
        Button button9 = new Button("button");
        Button button10 = new Button("button");

        frame.setLayout(new GridLayout(2,1));
        Panel panel = new Panel();
        Panel panel1 = new Panel();
        frame.add(panel);
        frame.add(panel1);

        Panel panel2 = new Panel();
        Panel panel3 = new Panel();

        panel.setLayout(new BorderLayout());
        panel.add(button1,BorderLayout.EAST);
        panel.add(button2,BorderLayout.WEST);
        panel.add(panel2,BorderLayout.CENTER);

        panel1.setLayout(new BorderLayout());
        panel1.add(button3,BorderLayout.EAST);
        panel1.add(button4,BorderLayout.WEST);
        panel1.add(panel3,BorderLayout.CENTER);

        panel2.setLayout(new GridLayout(2,1));
        panel2.add(button5);
        panel2.add(button6);

        panel3.setLayout(new GridLayout(2,2));
        panel3.add(button7);
        panel3.add(button8);
        panel3.add(button9);
        panel3.add(button10);

        frame.setVisible(true);
        frame.pack();

        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

Guess you like

Origin blog.csdn.net/Mr_yao0/article/details/121388782