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

GUI编程

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

GUI编程

GUI是什么?

简介:GUI是一个比较古老的图形化页面,是最早用于JDK1.2来进行窗口绘制的工具,运行这个窗口需要JRE环境,并且相对于现在的窗口来说,是不美观的,但里面包含了事件监听.

Swing的核心:Swing AWT

AWT:

AWT包含了创建用户界面和绘制图形和图像的所有类,同时也提供了GUI编程的核心控件和组件如:窗口按钮文本框,结构如下:

容器与组件 frame: frame是window下的一个窗口组件,可以使用这个组件来完成第一个窗口:
package com.text;

import java.awt.*;

public class test42 {
    public static void main(String[] args) {
        //设置窗口
        Myframe myframe1=new Myframe(200,200,100,100,Color.blue,false);
        Myframe myframe2=new Myframe(200,200,300,100,Color.red,false);
        Myframe myframe3=new Myframe(200,200,100, 300, Color.CYAN,false);
        Myframe myframe4=new Myframe(200,200,300, 300, Color.green,false);
    }
}

//窗口类
class Myframe extends frame{
    private static int id=1;

    public Myframe(int width,int height,int x,int y,Color color,boolean change){
        super("我的第"+(id++)+"个窗口");
        //创建窗口对象
        frame frame=new frame();
        //设置可见
        frame.setVisible(true);
        //设置大小
        frame.setSize(width,height);
        //设置背景颜色
        frame.setBackground(color);
        //设置出现位置
        frame.setLocation(x,y);
        //设置是否不可改变窗口
        frame.setResizable(change);
    }

}
Panel:

解决了关闭事件

package com.text;

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

public class test44 {
    public static void main(String[] args) {
        //创建窗口和面板
        frame frame=new frame("你好");
        Panel panel=new Panel();
        //设置frame布局为空
        frame.setLayout(null);
        //设置窗口
        frame.setBounds(100,100,300,300);
        frame.setBackground(Color.BLACK);
        //设置面板相对与frame布局
        panel.setBounds(100,100,100,100);
        panel.setBackground(Color.GREEN);
        frame.add(panel);//添加面板,因为Panel是基继承Component类的所以可以添加
        frame.setVisible(true);//设置可见
        //监听事件点击关闭则关闭窗口
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

    }
}
布局管理

流式布局:awt中提供了FlowLayout()流式布局

package com.text;

import java.awt.*;

public class test45 {
    public static void main(String[] args) {
        frame frame=new frame();
        Button button1=new Button("button1");
        Button button2=new Button("button2");
        Button button3=new Button("button2");
        button1.setSize(10,10);
        button2.setSize(10,10);
        button3.setSize(10,10);
        //设置流式布局
        frame.setLayout(new FlowLayout(FlowLayout.TRAILING));//里面的参数FlowLayout.CENTER(居中)FlowLayout.LEADING(左对齐)FlowLayout.RIGHt(右对齐)

        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.setVisible(true);
    }
}

东西南北中布局: awt中提供了BorderLayout类进行布局

package com.text;


import java.awt.*;

public class test46 {
    public static void main(String[] args) {
        frame frame=new frame();
        Button button1=new Button("CENTER");
        Button button2=new Button("NORTH");
        Button button3=new Button("EAST");
        Button button4=new Button("SOUTH");
        Button button5=new Button("WEST");

        frame.add(button1,BorderLayout.CENTER);//中
        frame.add(button2,BorderLayout.NORTH);//北
        frame.add(button3,BorderLayout.EAST);//东
        frame.add(button4,BorderLayout.SOUTH);//南
        frame.add(button5,BorderLayout.WEST);//西

        frame.setSize(200,200);
        frame.setVisible(true);
    }
}

表格布局:GridLayout

package com.text;

import java.awt.*;

public class test48 {
    public static void main(String[] args) {
        frame frame=new frame();
        frame.setLayout(new GridLayout(2,2));//表示两行两列
        Button button1=new Button();
        Button button2=new Button();
        Button button3=new Button();
        Button button4=new Button();

        frame.add(button1);
        frame.add(button2);
        frame.add(button3);
        frame.add(button4);
        frame.setVisible(true);
    }
}

练习:

使用混合布局实现以下布局:

 答案:

package com.text;

import java.awt.*;

public class test47 {
    public static void main(String[] args) {
        //设置窗口
        frame frame=new frame();

        Panel panel1=new Panel(new GridLayout(2,1));
        Panel panel2=new Panel(new BorderLayout());
        Panel panel3=new Panel(new GridLayout(2,2));
        Panel panel4=new Panel(new BorderLayout());
        //设置面板1,2
        Button button1=new Button("button");
        Button button2=new Button("button");
        Button button3=new Button("button");
        Button button4=new Button("button");

        panel1.add(button1);
        panel1.add(button2);
        panel2.add(button3,BorderLayout.WEST);//西
        panel2.add(panel1,BorderLayout.CENTER);//中
        panel2.add(button4,BorderLayout.EAST);//东

        //设置面板3,4
        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");

        panel3.add(button5);
        panel3.add(button6);
        panel3.add(button7);
        panel3.add(button8);

        panel4.add(button9,BorderLayout.WEST);//西
        panel4.add(panel3,BorderLayout.CENTER);//中
        panel4.add(button10,BorderLayout.EAST);//东

        frame.setLayout(new GridLayout(2,1));
        frame.add(panel2);
        frame.add(panel4);
        frame.pack();
        frame.setVisible(true);
    }
}
事件监听

按钮事件监听:ActionListener接口

package com.text;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class test49 {
    public static void main(String[] args) {
        frame frame=new frame();
        Button button1=new Button("static");
        Button button2=new Button("top");
        button1.addActionListener(new test());
        button2.addActionListener(new test());
        
        //添加监听事件
        frame.add(button1,BorderLayout.SOUTH);
        frame.add(button2,BorderLayout.NORTH);
        frame.pack();
        frame.setVisible(true);
    }
}

class test implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {//执行动作表示点击后会发生什么
        if (e.getActionCommand().equals("static")){//这里e.getActionCommand()表示获取的名字
            System.out.println("启动");
        }
        if (e.getActionCommand().equals("top")){
            System.out.println("停止");
        }
    }
}

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

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

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