首页 > 编程语言 >Java学习之路--GUI编程01

Java学习之路--GUI编程01

时间:2023-09-20 16:34:36浏览次数:48  
标签:01 Java -- frame public add new Button

package com.gui.lesson01;

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

//GUI编程课堂练习 exercise--练习 2023.3.14
public class ExerciseDemo {
public static void main(String[] args) {
//总的Frame 窗口
Frame frame = new Frame();//窗口

frame.setSize(400,300);//设置面板大小为:长400,宽300
frame.setLocation(300,400);//设置窗口摆放的初始位置
frame.setBackground(Color.BLACK);//设置面板背景颜色为黑色
frame.setVisible(true);//设置可见
frame.setLayout(new GridLayout(2,1));//rows--行,cols--列 gridlayout--表格布局

//4个面板
Panel p1 = new Panel(new BorderLayout());//第一个面板里放一个东西南北中布局,到这里将p1放进frame里是两行一列的样子
Panel p2 = new Panel(new GridLayout(2,1));//第二个面板里放一个表格布局(2行一列)GridLayout,到这里是将上半框架分割完成,上半只差按钮没有放进去了
Panel p3 = new Panel(new BorderLayout());//第三个面板里放一个东西南北中布局BorderLayout--p3、p4拼接出下半,按钮没有放进去
Panel p4 = new Panel(new GridLayout(2,2));//第四个面板里放一个表格布局(2行2列)

//上半部分
p1.add(new Button("East-1"),BorderLayout.EAST);//第一个面板里放第一个按钮,位置最右边,按钮名称-“East-1”,
// 因为下面面板可能还会有East,所以这里命名为这个,下一个命名为:East-2,把这个按钮放进第一个面板布局里--BorderLayout.EAST
p1.add(new Button("West-1"),BorderLayout.WEST);//第一个面板里放第二个按钮,位置最左边,按钮名称-“West-1”,
// 因为下面面板可能还会有West,所以这里命名为这个,下一个命名为:West-2,把这个按钮放进第一个面板布局里--BorderLayout.EAST
p2.add(new Button("p2-btn-1"));//第二个面板里放中间的两个按钮
p2.add(new Button("p2-btn-2"));
p1.add(p2,BorderLayout.CENTER);//将第二个面板p2放进第一个面板p1东西南北中布局的中间

//下半部分
p3.add(new Button("East-2"),BorderLayout.EAST);
p3.add(new Button("West-2"),BorderLayout.WEST);
//中间的四个按钮放第四个面板里,写一个for放四个按钮,节省资源,因为四个都在一个面板里,可用for来完成
for (int i = 0; i < 4; i++){
p4.add(new Button("for-" + i));
}
p3.add(p4,BorderLayout.CENTER);//将第四个面板p4放进第三个面板p3东西南北中布局的中间

frame.add(p1);//最后将p1面板和p3面板放进窗口里面,因为p2面板放在p1面板里面了,p4面板放在p3面板里面了,所以这里只用把p1和p3面板放进窗口frame里就行了
frame.add(p3);

//关闭窗口
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
@Override
public void windowActivated(WindowEvent e) {
//结束程序
System.exit(0);//括号里为e 的话是以异常的退出
}
});
}
}

//
package com.gui.lesson01;

//2023.3.13 GUI编程 东西南北中布局学习
import java.awt.*;

public class TestBorderLayout {
public static void main(String[] args) {
Frame frame = new Frame("TestBorderLayout");//title--标题

Button east = new Button("East");//East--东
Button west = new Button("West");//West--西
Button south = new Button("South");//South--南
Button north = new Button("North");//North--北
Button center = new Button("Center");//Center--中

frame.add(east, BorderLayout.EAST);//border--肢体
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);//设置可见
}
}

//
package com.gui.lesson01;

//2023.3.13 GUI编程 流式布局学习
import java.awt.*;

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

//组件--按钮(button)
Button button1 = new Button("button1");//括号里写按钮的名字(自己想要按钮叫啥就写啥) --label--标签
Button button2 = new Button("button2");
Button button3 = new Button("button3");

//设置为流式布局
// frame.setLayout(new FlowLayout());
frame.setLayout(new FlowLayout(FlowLayout.LEFT));//按钮在左边 left-左
frame.setLayout(new FlowLayout(FlowLayout.RIGHT));//按钮在右边 right-右
frame.setLayout(new FlowLayout(FlowLayout.CENTER));//按钮在中间 center-中间

frame.setSize(200,200);

//把按钮加上去
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);


}
}

//
package com.gui.lesson01;

import java.awt.*;

//2023.3.11 GUI编程---Frame(窗口) GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {

//Frame,JDk,学会看源码
Frame frame = new Frame("我的第一个Java图像窗口!");

//需要设置可见性
frame.setVisible(true);

//设置窗口大小 width(长) and height(宽)
frame.setSize(400,400);

//设置背景颜色 Color类
frame.setBackground(Color.blue);
// frame.setBackground(new Color(154, 65, 65));//自己设定一个颜色,点左边颜色块可以取色(自己想要的颜色,参数跟随选取的自己变换);

//弹出的初始位置
frame.setLocation(200,200);

//设置大小固定
frame.setResizable(false);//--加上这句窗口就不可以自由拉伸长和宽,大小固定了
//有以上这些代码建立了一个蓝色的窗口,但是窗口关闭不了
//停止运行程序窗口就关闭了

}
}
//
package com.gui.lesson01;

import java.awt.*;

//2023.3.11 GUI编程---Frame(窗口) GUI的第一个界面
public class TestFrame {
public static void main(String[] args) {

//Frame,JDk,学会看源码
Frame frame = new Frame("我的第一个Java图像窗口!");

//需要设置可见性
frame.setVisible(true);

//设置窗口大小 width(长) and height(宽)
frame.setSize(400,400);

//设置背景颜色 Color类
frame.setBackground(Color.blue);
// frame.setBackground(new Color(154, 65, 65));//自己设定一个颜色,点左边颜色块可以取色(自己想要的颜色,参数跟随选取的自己变换);

//弹出的初始位置
frame.setLocation(200,200);

//设置大小固定
frame.setResizable(false);//--加上这句窗口就不可以自由拉伸长和宽,大小固定了
//有以上这些代码建立了一个蓝色的窗口,但是窗口关闭不了
//停止运行程序窗口就关闭了

}
}

//
package com.gui.lesson01;

import java.awt.*;

//2023.3.11 GUI编程 ---展示多个窗口
//第一个类
public class TestFrame02 {
public static void main(String[] args) {
//这里看自己多个窗口要怎么排列,修改x y z w h 的参数
MyFrame myFrame1 = new MyFrame(100, 100, 200,200, Color.blue);
MyFrame myFrame2 = new MyFrame(300, 100, 200,200,Color.yellow);
MyFrame myFrame3 = new MyFrame(100, 300, 200,200, Color.red);
MyFrame myFrame4 = new MyFrame(300, 300, 200,200, Color.MAGENTA);//MAGENTA--粉红色
}
}

//第二个类--两个类写在一个里面
class MyFrame extends Frame {
static int id = 0;//可能存在多个窗口,我们需要一个计数器

public MyFrame(int x, int y, int w, int h, Color color){ //定义x、y两个变量--初始位置,定义 w、h 两变量 --宽、高
super("MyFrame" + (++id)); //封装,子类调父类方法关键字super ++id--每次新建自增一
setBounds(x, y, w, h);//setBounds() --这个方法可以直接设置四个属性
setBackground(color);//设置背景
setVisible(true);
}
}

//
package com.gui.lesson01;

import java.awt.*;

//2023.3.13 GUI编程--Grid布局 Grid--网格布局/表格布局
public class TestGridLayout {
public static void main(String[] args) {
Frame frame = new Frame("TestGridLayout");//title--标题

Button btn1 = new Button("btn1");
Button btn2 = new Button("btn2");
Button btn3 = new Button("btn3");
Button btn4 = new Button("btn4");
Button btn5 = new Button("btn5");
Button btn6 = new Button("btn6");

frame.setLayout(new GridLayout(3,2));//rows--行,cols--列 设置这个表格布局为3行2列

frame.add(btn1);
frame.add(btn2);
frame.add(btn3);
frame.add(btn4);
frame.add(btn5);
frame.add(btn6);

frame.pack();//Java 函数! --系统自动根据最优方式布局 --不加这一句就写死的布局(按照自己想要达到的布局效果)
frame.setVisible(true);//设置可见
}
}

//
package com.gui.lesson01;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;//方法1需要的包

//2023.3.12 --GUI编程 --Panel--记住,救赎之路,逃离在路上
//Panel---面板---可以看成是一个空间,但是不能单独存在,要放在Frame里面
//面板--解决了窗口关闭事件
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
//Panel-布局的概念
Panel panel = new Panel();


//设置布局
frame.setLayout(null);

//坐标
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(86, 198, 86));

//panel 设置坐标,相对于frame
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(253, 0, 155));

//frame.add(panel)
frame.add(panel);

frame.setVisible(true);

//监听事件,监听窗口关闭事件 System.exit(e)
//方法1:采用这种方法只是为了关闭一个窗口不好 frame.addWindowListener(new WindowListener() {//括号里需要什么 就 new 什么
// @Override
// public void windowOpened(WindowEvent e) {
//
// }
//
// @Override
// public void windowClosing(WindowEvent e) {
//
// }
//
// @Override
// public void windowClosed(WindowEvent e) {
//
// }
//
// @Override
// public void windowIconified(WindowEvent e) {
//
// }
//
// @Override
// public void windowDeiconified(WindowEvent e) {
//
// }
//
// @Override
// public void windowActivated(WindowEvent e) {
//
// }
//
// @Override
// public void windowDeactivated(WindowEvent e) {
//
// }
// });

//方法2:适配器模式:
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭的时候需要做的事情
@Override
public void windowActivated(WindowEvent e) {
//结束程序
System.exit(0);//括号里为e 的话是以异常的退出
}
});

}
}

标签:01,Java,--,frame,public,add,new,Button
From: https://www.cnblogs.com/CaiDingChao/p/17717677.html

相关文章

  • 公众号插入数学函数还不简单?
    排版教育行业的新媒体人有时候需要在公众号插入数学公式,但是微信公众号不能直接编辑数学函数,通常都需要再进入一个别的网站,来编辑数学函数,但是有点麻烦,今天小编就告诉大家一个更加便捷的方法,可以在编辑文章的同时,插入数学函数公式打开速排小蚂蚁在编辑区上方的工具栏找到“插入公......
  • mysql数据库服务双主搭建
    mysql数据库服务双主搭建1、搭建两台数据库服务环境,master,slave数据库搭建参考:https://www.cnblogs.com/zuouncle/p/17713806.html2、查看服务运行状态systemctlstatusmysqld 3、主库1(master)配置配置mysql的启动配置文件vim/etc/my.cnf#开启binlog日志log......
  • Spring,SpringMVC,SpringBoot,SpringCloud有什么区别?
    简单介绍Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring使你能够编写更干净、更可管理、并且更易于测试的代码。SpringMVC是Spring的一个模块,一个web框架。通过DispatcherServlet,ModelAndView和ViewResolver,开发web应用变得很容易。主要针对的是网站......
  • 15-1 ACL实验
    实验一(基本ACL的应用)学会配置基础的ACL拓扑在AR1对应位置配置ACL,使PC1禁止访问PC2配置PC1配置,PC2参考PC1AR1配置<Huawei>sys[Huawei]sysAR1[AR1]integi0/0/0[AR1-GigabitEthernet0/0/0]ipaddr192.168.1.254255.255.255.0[AR1-GigabitEthernet0/0/0]integi......
  • 有关指针的一些代码定义
    定义一个指针int*p;p是指向整型的指针。由于没有初始化操作,p的指向是未知的,这是一个野指针。连续定义指针int*p1,*p2;p1和p2都是指针类型。如果写成int*p1,p2;p1是指针类型,p2是整型变量,不是指针。常量指针(指向常量的指针变量)constint*p;intconst*p;上面......
  • oracle数据库中查看表空间下各表占用表空间的大小
    背景:在做数据库巡检时,检查大表是必不可少的操作,可以查看各表占用表空间的大小,下面直接上例子,然后表空间名字我写成实际的了selectt.owner,t.segment_name,t.tablespace_name,bytes/1024/1024/1024assizes,q.num_rows,t.segment_typefromdba_segmentstleftjoindba_tablesq......
  • 一键实现冒泡排序算法,代码质量有保障!
    近年来,深度学习和神经语言模型作为提高开发人员生产力的手段,尤其是2022年11月30日,ChatGPT这一现象级热点得出横空出世,在全球范围内形成了热烈的讨论,其中关于自动化代码生成和其它软件工程方面受到了极大的关注。软件开发过程涵盖了各种代码生成任务,包括代码自动生成、代码翻译和......
  • Redis之Sentinel哨兵监控
    哨兵简介 1.redis提供了哨兵的命令,是一个独立的进程 2.哨兵通过发送命令给节点,通过redis节点响应达到监控多个redis实例的运行情况 3.当哨兵发现master宕机,会自动将从节点切换成主节点,并通知其他的从节点,修改配置文件切换主机 4.默认端口是26379哨兵的主要任务 1.......
  • 浅析利用AI智能识别与视频监控技术打造智慧水产养殖监管系统
    一、方案背景针对目前水产养殖集约、高产、高效、生态、安全的发展需求,基于智能传感、智慧物联网、人工智能、视频监控等技术打造智慧水产系统,成为当前行业的发展趋势。传统的人工观察水产养殖方式较为单一,难以及时发现人员非法入侵、偷盗、偷钓、水质污染等管理问题。二、方案概述......
  • 安装达梦数据库
    下载地址:https://www.dameng.com/form/plogin/s/L2xpc3RfMTEwLmh0bWw%3D.html[root@bogon~]#unzipdm8_20230418_x86_rh6_64.zip#解压Archive:dm8_20230418_x86_rh6_64.zipinflating:dm8_20230418_x86_rh6_64.iso_SHA256.txtinflating:dm8_20230418_x86_rh6_6......