java openDia修改名称,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实现。增强了移植性,属

轻量级控件

继承关系图

njr5wviwfya.jpg

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):将可以触发某一个事件的动作(不只一个动作)都已经封装到了监听器中

事件处理(引发事件后处理方式)

事件监听机制流程图

xsutiinl03h.jpg

事件监听机制

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+"\r\n");

}

} else {

String info = "输入信息错误,请重输";

lab.setText(info);

d.setVisible(true);

}

}

public static void main(String[] args) {

new Test();

}

}

菜单

概述

MenuBar,Menu,MenuItem

先创建菜单条,再创建菜单,每一个菜单 中建立菜单项

也可以菜单添加到菜单中,作为子菜单

通过setMenuBar()方法,将菜单添加到Frame中

菜单继承体系

sdwakrgbjkc.jpg

代码示例

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类型文件的打开动作的关联程序

jdk\bin\javaw.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+"\r\n");

}

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的资料请关注聚米学院其它相关文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值