前言:通过一个简单实例来实现Java的GUI编程 , 对于新手较为友好 , 且有一定的实用性 , 正在学习Java的同学看过来!!包教包会 , 如有疑问欢迎私信询问!
【150行代码写个低配版WPS?:手把手教你实现+附完整源码】目录
实例展示
一、GUI编程基本概念
二、布局方式
三、构建流程
1、编写一个类
2、功能选择
3、 窗口的构造方法及初始化
3、init()方法的实现
1、布局方式
2、控件初始化
3、设置布局
4、设置监听器
5、实现监听器:
6、图片文件的选择和插入
四、完整源码
实例展示
一、GUI编程基本概念
GUI , 即图形用户界面 , 可以更好的实现用户与软件的交互 , 而不是单纯的黑色输出界面 。既增强了软件的美观性 , 同时也便于操作 。而实现Java的可视化窗口 , 一般需要导入Swing和AWT两个包来实现 , 里面包含丰富的相关方法来设置相关控件的属性等 。
import javax.swing.*;import java.awt.*;
二、布局方式
本实例采用Box盒子布局 , 即将每个组件按照一定顺序和规律进行放置 , 再进行嵌套!
即把按钮、复选框、菜单、文本域等组件装在一个box里 , 再将有序的box放置在一个大盒子里 , 而最大的则是底层容器!再把添加进容器即可!
三、构建流程 1、编写一个类
该类为 , 且实现了监听器 , 首先对所需的控件进行初始化!
2、功能选择3、 窗口的构造方法及初始化
构造方法 , 即创建实例后自动运行的一个方法 , 将窗体初始化方法以及窗体基本性质的设定写在构造方法里 。
init()方法实现窗口功能设置窗口位置、大小设置窗口名称(默认左上角)设置窗口关闭时的方法(默认无操作)设置窗口为可见3、init()方法的实现 1、布局方式
将起始几个盒子设置为水平布局方式 , 即添加的控件为水平分布
设置两个盒子为垂直分布 , 即把三个小box按从上到下的顺序排布
2、控件初始化
文章插图
即实例化控件并初始化:(部分代码)
3、设置布局
即将控件一个个放进对应的盒子中 , 有序排放:
tips:还需注意间隔 , 因此Box.t()即添加平行距离且为10个像素?
有时是添加垂直距离Box.()
4、设置监听器
为控件设置对应的监听器 , 即选择不同的样式会有什么结果:
5、实现监听器:
监听器的实现才是最为关键的部分 , 通过获取监听源的数据来作出相应的反应 , 可以简单的用语句实现:(更改文本域字体颜色)
6、图片文件的选择和插入
通过Java内置的文件选择器 , 打开一个文件选择窗口来进行文件的选择 , 并设定为只有Png格式的图片才能插入!
点击文件选择按钮 , 触发监听器打开文件选择窗口选择文件 , 且扩展名必须为.Png(可更改)如果以选择好图片文件 , 将其添到一个标签内将该标签添加到中即可
其实我尝试过很多设法将图片可以插入文本域内 , 但是都失败了 , 只能退而求其次插入到文本域后!
四、完整源码
package FileTree_Test;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;public class GUITest_1 {publicstatic void main(String[] args) {new Window2() ;}static class Window2 extends JFrame implements ActionListener {private JComboBox ColourChoice, CharacterSize,Format;private JTextArea ShowArea;private JLabeltag2, tag3, tag4;private Box box2, box3, boxAll,box4, BigBox;JFileChooser fileChooser ;JButton B_Imge;public Window2() {init();setBounds(400, 400, 360, 350);setVisible(true);setTitle("WPS简化版");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setResizable(true);}void init() {box2 = Box.createHorizontalBox();box3 = Box.createHorizontalBox();box4=Box.createHorizontalBox();boxAll = Box.createVerticalBox();BigBox = Box.createVerticalBox();setLayout(new FlowLayout());tag2 = new JLabel("颜色选择");tag3 = new JLabel("字体大小");tag4=new JLabel("字体格式");Format = new JComboBox();ShowArea = new JTextArea(15,15);ColourChoice = new JComboBox();ColourChoice.addItem("红色");ColourChoice.addItem("蓝色");ColourChoice.addItem("绿色");CharacterSize = new JComboBox();CharacterSize.addItem("三号");CharacterSize.addItem("四号");CharacterSize.addItem("五号");Format=new JComboBox();Format.addItem("华文行楷");Format.addItem("幼圆");Format.addItem("仿宋");B_Imge=new JButton("选择图片");fileChooser=new JFileChooser();box2.add(tag2);box2.add(ColourChoice);box3.add(tag3);box3.add(CharacterSize);box4.add(tag4) ;box4.add(Format);box4.add(Box.createHorizontalStrut(10));box4.add(B_Imge);boxAll.add(Box.createVerticalStrut(10));boxAll.add(box2);boxAll.add(Box.createVerticalStrut(10));boxAll.add(box3);boxAll.add(Box.createVerticalStrut(10));boxAll.add(box4);BigBox.add(boxAll);BigBox.add(Box.createVerticalStrut(10));BigBox.add(ShowArea);add(BigBox);ColourChoice.addActionListener(this);CharacterSize.addActionListener(this);Format.addActionListener(this);B_Imge.addActionListener(this);}@Overridepublic void actionPerformed(ActionEvent e){int x = ColourChoice.getSelectedIndex();switch (x){case 0:ShowArea.setForeground(Color.RED);break;case 1:ShowArea.setForeground(Color.blue);break;case 2:ShowArea.setForeground(Color.green);break;default:ShowArea.setForeground(Color.BLACK);}int y=CharacterSize.getSelectedIndex();int Size;switch (y){case 0:Size=25;break;case 1:Size=20;break;case 2:Size=15;break;default: Size=10 ;break;}int z = Format.getSelectedIndex();switch (z){case 0:ShowArea.setFont(new Font("华文行楷",Font.PLAIN,Size));break;case 1:ShowArea.setFont(new Font("幼圆",Font.PLAIN,Size));break;case 2:ShowArea.setFont(new Font("仿宋",Font.PLAIN,Size));break;default:ShowArea.setFont(new Font("宋体",Font.CENTER_BASELINE,Size));}if(e.getSource()==B_Imge){JFileChooser fileChooser=new JFileChooser();fileChooser.showOpenDialog(null);File Imgefile=new File(fileChooser.getSelectedFile().getPath());JLabel JL=new JLabel(new ImageIcon(Imgefile.getPath()));if(Imgefile.getName().endsWith(".png")&&Imgefile!=null){System.out.println("Insert");BigBox.add(JL);}else System.out.println("False");}}}}
- Matlab代码实现 【sop】基于灵敏度分析的有源配电网智能软开关优化配置
- Streamlit应用程序使用Streamlit
- A星算法代码
- 示例代码 手机C语言代码,C语言
- 含代码实现 SizeBalanceTree详解
- Global Pointer
- 草图 UI 转 HTML 代码,微软开源Sketch2Code
- 以U-NET为例的网络构建代码实现
- 古代公文或信件如何加密?拆字法和代码法是什么
- Day 5-6 阿里云手机验证码及登录代码