栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);
            }
        });
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/531390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号