JAVA基础-GUI
Java也提供图像化编程
图形化
GUI(图形用户界面)
GUI
1 Graphical User Interface(图形用户接口)
2 用图形的方式,来显示计算机操作的界面,这样更方便更直观
CLI
1 Command line User Interface (命令行用户接口)
2 就是常见的Dos命令行操作
3 需要记忆一些常用的命令,操作不直观
Java为GUI提供的对象都存在java.Awt和javax.Swing两个包中
Awt和Swing
java.Awt:Abstract Window ToolKit(抽象窗口 工具包),需要调用本地系统方法实现功能。属重量级控件
javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属
轻量级控件
继承关系图
Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来
布局管理器
容器中的组件的排放方式,就是布局
常见的布局管理器:
FlowLayout(流式布局管理器)从左到右的顺序排列Panel默认的布局管理器
BorderLayout(边界布局管理器)东,南,西,北,中Frame默认的布局管理器
GridLayout(网格布局管理器)规则的矩阵
CardLayout(卡片布局管理器)选项卡
GridBagLayout(网格包布局管理器)非规则的矩阵
建立一个简单的窗体
Container常用子类:Window Panel(面板,不能单独存在)
Window常用子类:Frame Dialog
简单的窗体创建过程:
Frame f = new Frame('my window');f.setLayout(new FlowLayout());f.setSize(500,400);//设置窗体大小f.setLocation(300,200);//设置窗体出现在屏幕的位置f.setVisible(true); //设置窗口可见性
事件监听
事件监听机制组成
事件源(组件):就是awt包或者swing包中的那些图形界面组件
事件(Event):每一个事件源都有自己特有的对应事件和共性事件
监听器(Listener):将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中
事件处理(引发事件后处理方式)
事件监听机制流程图
事件监听机制
1 确定事件源(容器或组件)
2 通过事件源对象的addXXXListener()方法将侦听器注册到该事件源上
3 该方法中接收XXXListener的子类对象,或者XXXListener的子类XXXAdapter的子类对象
4 一般用匿名内部类来表示
5 在覆盖方法的时候,方法的参数一般是XXXEvent类型的变量接收
6 事件触发后会把事件打包成对象传递给该变量(其中包括事件源对象。通过getSource()或者getComponent()获取)
import java.awt.*;import java.awt.event.*;import java.io.*;class Test {private Frame f;private TextField tf;private Button but;private TextArea ta;private Dialog d;private Label lab;private Button okBut;Test() {init();}public void init() {f = new Frame('my window');f.setBounds(300,100,600,500);f.setLayout(new FlowLayout());tf = new TextField(60);but = new Button('转到');ta = new TextArea(25,70);d = new Dialog(f,'提示信息-self',true);d.setBounds(400,200,240,150);d.setLayout(new FlowLayout());lab = new Label();okBut = new Button('确定');d.add(lab);d.add(okBut);f.add(tf);f.add(but);f.add(ta);myEvent();f.setVisible(true);}private void myEvent() {okBut.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {d.setVisible(false);}});d.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {d.setVisible(false);}});tf.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent e) {if(e.getKeyCode()==KeyEvent.VK_ENTER)showDir();}});but.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {showDir();}});f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}private void showDir() {String dirPath = tf.getText();File dir = new File(dirPath);if(dir.exists() && dir.isDirectory()) {ta.setText('');String[] names = dir.list();for(String name : names) {ta.append(name+'rn');}} else {String info = '输入信息错误,请重输';lab.setText(info);d.setVisible(true);}}public static void main(String[] args) {new Test();}}
菜单
概述
MenuBar,Menu,MenuItem先创建菜单条,再创建菜单,每一个菜单 中建立菜单项也可以菜单添加到菜单中,作为子菜单通过setMenuBar()方法,将菜单添加到Frame中
菜单继承体系
代码示例
import java.awt.*;import java.awt.event.*;class Test {private Frame f;private MenuBar mb;private Menu m,subMenu;private MenuItem closeItem,subItem;Test(){init();} public void init(){f = new Frame('my window');f.setBounds(300,100,500,600);f.setLayout(new FlowLayout());mb = new MenuBar();m = new Menu('文件');subMenu = new Menu('子菜单');subItem = new MenuItem('子条目');closeItem = new MenuItem('退出');subMenu.add(subItem);m.add(subMenu);m.add(closeItem);mb.add(m);f.setMenuBar(mb);myEvent();f.setVisible(true);}private void myEvent() {closeItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}});f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args) {new Test();}}
可执行Jar包
1 将多个类封装到了一个包(package)中。
2 定义一个jar包的配置信息。
3 定义一个文件a.txt,文件内容内容为:Main-Class:(空格)包名.类名(回车)
4 打jar包。jar -cvfm my.jar a.txt 包名
5 通过winrar程序进行验证,查看该jar的配置文件中是否有自定义的配置信息
6 通过工具?文件夹选项?文件类型?jar类型文件,通过高级,定义该jar类型文件的打开动作的关联程序jdkbinjavaw.exe -jar
package mymenu;import java.awt.*;import java.awt.event.*;import java.io.*;public class Test {private Frame f;private MenuBar bar;private TextArea ta;private Menu fileMenu;private MenuItem openItem,saveItem,closeItem;private FileDialog openDia,saveDia;private File file;Test() {init();}public void init() {f = new Frame('my window');f.setBounds(300,100,650,600);bar = new MenuBar();ta = new TextArea();fileMenu = new Menu('文件');openItem = new MenuItem('打开');saveItem = new MenuItem('保存');closeItem = new MenuItem('退出');fileMenu.add(openItem);fileMenu.add(saveItem);fileMenu.add(closeItem);bar.add(fileMenu);f.setMenuBar(bar);openDia = new FileDialog(f,'我要打开',FileDialog.LOAD);saveDia = new FileDialog(f,'我要保存',FileDialog.SAVE);f.add(ta);myEvent();f.setVisible(true);}private void myEvent() {saveItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if(file==null) {saveDia.setVisible(true);String dirPath = saveDia.getDirectory();String fileName = saveDia.getFile();if(dirPath==null || fileName==null)return ;file = new File(dirPath,fileName);}try {BufferedWriter bufw = new BufferedWriter(new FileWriter(file));String text = ta.getText();bufw.write(text);//bufw.flush();bufw.close();} catch (IOException ex) {throw new RuntimeException();}}});openItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {openDia.setVisible(true);String dirPath = openDia.getDirectory();String fileName = openDia.getFile();if(dirPath==null || fileName==null)return ;ta.setText('');file = new File(dirPath,fileName);try {BufferedReader bufr = new BufferedReader(new FileReader(file));String line = null;while((line = bufr.readLine()) != null) {ta.append(line+'rn');}bufr.close();} catch (IOException ex) {throw new RuntimeException('读取失败');}}});closeItem.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.exit(0);}});f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});}public static void main(String[] args) {new Test();}}
以上就是JAVA基础-GUI的详细内容,更多关于JAVA GUI的资料请关注好吧啦网其它相关文章!
相关文章: