--------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
用户交互方式
1 DOS命令行不利于记忆
2 图像化界面
专门用于图像化界面的包:java.awt,javax.swing
Java.awt:比较依赖于系统,跨平台性差重量级控件
Javax.swint:基于awt,增强了移植性,轻量级组件
Eclipse用的是swt
Component
Container(容器),window panel(面板)
Button,checkbox,label textcomponent textarea textField
Container作为一个组件,可以添加组件是他的特点
流式布局:默认居中
边界式布局:必须指定边界,否则默认全局中添加新组建就覆盖
网格式布局:分格,组件存在于格子中
卡片式布局:
网格包布局:
上面边界,下面流式布局:先把窗体进行大区快的划分,然后每个区块都加一个Panel
然后在panel中加控件
Container内部封装了一个集合,因为他可以根据角标来添加元素
图形化界面是由另外一个线程控制的,创建一个图像化界面就是创建一个线程
/*
* 1 创建窗体
* 2 设置窗体属性,大小是否可见
* 3 设置布局管理
* 4 添加控件
* */
publicstaticvoid main(String[] args) {
//Frame有一个默认边界布局,全部剧中填充
Frame f = new Frame("MYAWT");
//设置该窗口是否可见
f.setVisible(true);
//设置窗口大小
f.setSize(500, 300);
//设置窗口位置
f.setLocation(200, 100);
//设置布局管理
f.setLayout(new FlowLayout());
//按钮
Button b = new Button("提交");
f.add(b);
System.out.println("1");
}
事件监听机制
包括事件源,事件,监听器,处理方式
事件源:就是普通的图形界面组件
事件:每一个事件源都有自己的特有的对应事件,和共性事件
监听器:将可以触发某一个事件的动作都已经封装到了监听器中
以上三者都已定义好了,我们要做的事情是对产生的动作进行处理
f.addWindowListener(new event());
class event extends WindowAdapter
{
@Override
publicvoid windowClosing(WindowEvent e) {
//System.out.println("关闭");
System.exit(0);
}
@Override
publicvoid windowActivated(WindowEvent e) {
//只要该窗口在最前端,就会触发该方法
System.out.println("最前端");
}
@Override
publicvoid windowOpened(WindowEvent e) {
System.out.println("打开窗口");
}
}
分离事件和界面
publicclass Test02 {
//定义全局变量都能访问到
private Frame f;
private Button b;
public Test02() {
init();
}
//将事件和图像化界面分离
publicvoid init(){
f = new Frame("测试");
b = new Button("a");
//使用一个函数来设置窗口位置和大小
f.setBounds(100, 100, 300, 300);
//布局管理器
f.setLayout(new FlowLayout());
f.setVisible(true);
//定义按钮
b = new Button();
f.add(b);
event();
}
publicvoid event()
{
f.addWindowListener(new WindowAdapter() {
@Override
publicvoid windowActivated(WindowEvent e) {
System.out.println("1");
}
@Override
publicvoid windowClosing(WindowEvent e) {
System.out.println("1");
}
@Override
publicvoid windowOpened(WindowEvent e) {
System.out.println("1");
}
});
//它是少数没有适配器接口的其中一个
b.addActionListener(new ActionListener() {
@Override
publicvoid actionPerformed(ActionEvent arg0) {
System.out.println("asd");
}
});
}
publicstaticvoid main(String[] args) {
new Test02();
}
}
添加监听
publicclass Test03 {
//定义全局变量都能访问到
private Frame f;
private Button b;
private TextField t;
public Test03() {
init();
}
//将事件和图像化界面分离
publicvoid init(){
f = new Frame("测试");
//初始化指定列数
t = new TextField(40);
//定义按钮
b = new Button("test");
t.isVisible();
//使用一个函数来设置窗口位置和大小
f.setBounds(300, 300, 600, 500);
//布局管理器
f.setLayout(new FlowLayout());
f.setVisible(true);
f.add(t);
f.add(b);
event();
}
publicvoid event()
{
//活动监听,只要按钮被活动就会执行,如果规定了该监听又规定了其他监听,其他监听先执行,因为其他监听更具体
b.addActionListener(new ActionListener() {
@Override
publicvoid actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
});
b.addMouseListener(new MouseListener() {
//进入E为鼠标事件的对象
@Override
publicvoid mouseExited(MouseEvent e) {
System.out.println("离开");
}
//离开
@Override
publicvoid mouseEntered(MouseEvent e) {
System.out.println("进入");
}
});
b.addKeyListener(new KeyAdapter() {
@Override
publicvoid keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
publicvoid keyPressed(KeyEvent e) {
System.out.println(e.getKeyText(e.getKeyCode())+"!!!"+e.getKeyCode());
//按esc关闭窗口
if(e.getKeyCode() == KeyEvent.VK_ESCAPE)
System.exit(1);
//组合键
if(e.isControlDown()&&e.getKeyCode() == KeyEvent.VK_ENTER)
{
//e.isShiftDown();
//e.isAltDown()
System.exit(2);
}
}
});
t.addKeyListener(new KeyAdapter() {
@Override
publicvoid keyPressed(KeyEvent e) {
int i = e.getKeyCode();
if(!(i>=KeyEvent.VK_0 && i<=KeyEvent.VK_9))
{
//如果输入的是非数字则不让输入
e.consume();
}
}
});
}
}
练习
b.addActionListener(new ActionListener() {
@Override
publicvoid actionPerformed(ActionEvent arg0) {
String string = t.getText();
File file = new File(string);
if(file.exists()&&file.isDirectory())
{
String[] str = file.list();
for(String s : str)
{
ta.append(s+"\r\n");
}
}
t.setText("");
}
});
对话框:
Dialog依赖于别的对话框存在,所以需要将他以来的对话框对象作为参数传递进去,第二个参数确定该窗口是否是模化窗口
开始设置该对话框为不可见,当触发某些事件时修改为可见,然后当点击确定或者关闭则再次设置为不可见,不能system.exit,否则整个程序关闭
else
{
d.setVisible(true);
}
菜单:
菜单栏,菜单,菜单项,子菜单
private Frame f;
private MenuBar mb;
private Menu m;
private Menu m1 ,m2 ;
private MenuItem zm1,zm2;
public Test06() {
f = new Frame();
//这三步缺一不可
f.setBounds(300, 300, 500, 500);
f.setLayout(new FlowLayout());
f.setVisible(true);
mb = new MenuBar();
m = new Menu("文件");
//如果想要有子菜单 new menu,如果不想有子菜单 new menuItem
m1 = new Menu("文件1");
m2 = new Menu("文件2");
zm1 = new MenuItem("子1");
zm2 = new MenuItem("子2");
mb.add(m);
m.add(m1);
m.add(m2);
//添加子菜单
m1.add(zm1);
m1.add(zm2);
//添加菜单
f.setMenuBar(mb);
}
使用界面打开保存文件
publicclass Test06 {
private Frame f;
private MenuBar mb;
private Menu m;
private Menu m1 ,m2 ;
private MenuItem zm1,zm2;
private FileDialog open;
private FileDialog save;
private TextArea ta;
private File file;
public Test06() {
f = new Frame();
//这三步缺一不可
f.setBounds(300, 300, 500, 500);
f.setLayout(new FlowLayout());
f.setVisible(true);
mb = new MenuBar();
m = new Menu("文件");
//如果想要有子菜单 new menu,如果不想有子菜单 new menuItem
m1 = new Menu("文件1");
m2 = new Menu("打开");
zm1 = new MenuItem("打开");
zm2 = new MenuItem("保存");
mb.add(m);
m.add(m1);
m.add(m2);
//添加子菜单
m1.add(zm1);
m1.add(zm2);
open = new FileDialog(f, "打开",FileDialog.LOAD);
save = new FileDialog(f, "保存",FileDialog.SAVE);
//添加菜单
f.setMenuBar(mb);
ta = new TextArea(30,50);
f.add(ta);
event();
}
publicvoid event()
{
zm1.addActionListener(new ActionListener() {
@Override
publicvoid actionPerformed(ActionEvent e) {
ta.setText("");
open.setVisible(true);
//返回的是文件名
//System.out.println(open.getFile());
file = new File(open.getDirectory()+open.getFile());
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
while((line = br.readLine())!=null)
{
ta.append(line+"\r\n");
}
} catch (Exception e1) {
thrownew RuntimeException("读取失败");
}
}
});
zm2.addActionListener(new ActionListener() {
@Override
publicvoid actionPerformed(ActionEvent e) {
save.setVisible(true);
file = new File(save.getDirectory(),save.getFile());
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write(ta.getText());
bw.close();
} catch (IOException e1) {
thrownew RuntimeException("保存失败");
}
}
});
}
publicstaticvoid main(String[] args) {
new Test06();
}
}
打包jar –cvf …jar 文件夹名
相关推荐
黑马程序员_毕向东_Java基础视频教程第22天-06-GUI(Action事件).zip
传智播客_Java培训_毕向东_Java基础[08-GUI]系黑马程序员_毕向东_Java基础视频教程 GUI •Graphical User Interface(图形用户接口)。 • 用图形的方式,来显示计算机操作的界面,这样更方便更直 观。 CLI •...
行时所需要的基本条件和许多 Java 基础类,例如,IO 类、GUI 控件类、网络类等。JRE 是提供给 普通用户使用的,如果你只想运行别人开发好的 Java 程序,那么,你的计算机上必须且只需安装 JRE。 JDK(Java ...
微盘下载的 SAP_GUI_730_JAVA_MAC
java图形编程实例,非常好的javaGUI编程入门程序。
java反编译工具,jd_guijava反编译工具,jd_guijava反编译工具,jd_guijava反编译工具,jd_guijava反编译工具,jd_guijava反编译工具,jd_guijava反编译工具,jd_guijava反编译工具,jd_guijava反编译工具,jd_gui...
GUI java源码 多种例子 java大学课程
Java聊天软件chat_src用定制的GUI开发
java常见布局的例子,对gui编程很有帮助。
Windows操作系统自带的计算器是个很方便的小工具,利用Java的GUI编程,实现一个Java GUI计算器应用程序界面,窗口标题为“计算器”,窗口布局如下图所示,在此计算器应用程序中实现“+、-、*、/”运算操作
这是一个java程序,希望大家好好学习哦!
java 图形界面的练习,适合新手练习使用
模拟ATM系统(JAVA与数据库):这个系统的功能是模拟ATM机的登陆、取款、更改密码等功能,利用了多线程、JDBC接口、GUI。
使用eclipseIDE和JAVA语言编写天气查看GUI应用程序,简洁美观易懂。
初级学习者必备,开放的gui源代码,对于了解学习相关知识十分有用。
功能齐全的学籍管理系统,是利用javaGUI做的
java gui教程,涵盖了java gui的所有组件的创建及事件的创建说明
java GUI编程,可以编写出任意你想要的界面
Java™ 2 GUI Fundamentals with Swing。系统性的介绍了java 2 GUI Fundamentals with Swing.有大量的例子加以佐证。
这是一个java写的拼图游戏,用了swing、多线程等知识,可以设置行数列、列数、还有使用多线程写的游戏动画,拼图的图块具有磁贴设计,代码封装性较强,容易移植,纯原创。