Java 图形界面编程
简单入门
package GUI;
import java.awt.*;
/**
* GUI:Graphical user interface
*
* CLI:command line user interface
*
* awt:abstract window toolkit 抽象窗口工具包
*组件就是对象
*
*/
public class Driver {
public static void main(String[] args) {
/**
* 创建窗体对象
*/
//Frame frame=new Frame();
Frame frame=new Frame("杨钰莹");//相当于 Frame frame=new Frame(); frame.setTitle("fuck Java");
/**
* 窗体标题
*/
//frame.setTitle("fuck Java");
/**
* 设置窗体大小
*/
frame.setSize(640,480);//单位是:像素
/**
* 设置窗体位置
*/
frame.setLocation(100,200);
/**
* 调用一个方法,设置窗体可见
*/
// frame.show();//丢弃的方法
frame.setVisible(true);//推荐使用的方法
System.out.println("hello world");
}
}
关闭窗口操作
知识储备
1.事件源:事件发生的地方
2.事件: 就是要发生的事情
3.时间处理 就是针对发生的事情做出处理方案
4.事件监听 就是把 事件源 和 事件 关联起来
举例子:人受伤事件
事件源:人 具体的对象
Person p1=new Person("鲁智深");
Person p2=new Person("张飞");
事件:受伤
interface 受伤接口{
一拳();
一脚();
一块砖头();
}
事件处理:
受伤处理类 implements 受伤接口{
一拳(){
print("手残废了");
}
一脚(){
print("脚断了");
}
一块砖头(){
print("砖头碎了");
}
}
事件监听:
p1.注册监听(受伤接口);
方法 1
package GUI;
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
/**
* GUI:Graphical user interface
*
* CLI:command line user interface
*
* awt:abstract window toolkit 抽象窗口工具包
*组件就是对象
*
*/
public class Driver {
public static void main(String[] args) {
/**
* 创建窗体对象
*/
Frame frame=new Frame("杨钰莹");
/**
* 设置窗体属性
*/
frame.setBounds(100,200,640,480);
/**
* 让窗体关闭
*/
//事件源
//事件:关闭
//事件处理:关闭窗口(System.exit(0))
//事件监听
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
@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) {
}
});
//设置窗体可见
frame.setVisible(true);//推荐使用的方法
System.out.println("hello world");
}
}
方法2
package GUI;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
/**
* GUI:Graphical user interface
*
* CLI:command line user interface
*
* awt:abstract window toolkit 抽象窗口工具包
*组件就是对象
*
*/
public class Driver {
public static void main(String[] args) {
/**
* 创建窗体对象
*/
Frame frame=new Frame("杨钰莹");
/**
* 设置窗体属性
*/
frame.setBounds(100,200,640,480);
/**
* 让窗体关闭
*/
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//设置窗体可见
frame.setVisible(true);//推荐使用的方法
System.out.println("hello world");
}
}
按钮事件小案例
package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
* 需求:把 按钮 添加到窗体,并对按钮添加点击事件
* 1.创建窗体对象
* 2.创建按钮对象和
* 3.把按钮添加到窗体
* 4.窗体现实
*/
public class Driver {
public static void main(String[] args) {
//1.创建窗体对象
Frame frame=new Frame("金品梅");
//设置属性
frame.setBounds(100,200,640,480);
//设置布局为流式布局
frame.setLayout(new FlowLayout());
//2.创建按钮对象和
Button button=new Button("ok");
// button.setSize(20,10);
//3.把按钮添加到窗体
frame.add(button);
//设置窗体关闭处理
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//按钮添加事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("潘金莲");
}
});
//4.窗体显示
frame.setVisible(true);
}
}
模仿QQ在一个文本框输入 在另一个文本框回显
package GUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Driver {
public static void main(String[] args) {
//创建窗体对象
Frame frame=new Frame("金品梅");
//设置属性
frame.setBounds(100,200,640,480);
//设置布局为流式布局
frame.setLayout(new FlowLayout());
//创建文本框
TextField textField=new TextField(20);
//创建按钮
Button button=new Button("submit data");
//创建文本域
TextArea textArea=new TextArea(12,80);
//把组建添加窗体
frame.add(textArea);
frame.add(textField);
frame.add(button);
//对按钮添加事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取文本框的值
String tf=textField.getText().trim();
//清空数据
textField.setText(" ");
//设置给文本域
// textArea.setText(tf);
textArea.append(tf+"\t\n");
//获取光标
textField.getCursor();
}
});
//设置窗体关闭处理
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//窗体显示
frame.setVisible(true);
}
}
鼠标移动到按钮上 (单击或)自动变色
package GUI;
import java.awt.*;
import java.awt.event.*;
public class Driver {
public static void main(String[] args) {
//创建窗体对象
Frame frame=new Frame("金品梅");
//设置属性
frame.setBounds(100,200,640,480);
//设置布局为流式布局
frame.setLayout(new FlowLayout());
Button redButton=new Button("red");
Button greenButton=new Button("green");
Button blueButton=new Button("blue");
//Button redButton=new Button("red");
frame.add(redButton);
frame.add(greenButton);
frame.add(blueButton);
//对按钮添加动作事件 方法1
/*redButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setBackground(Color.RED);
}
});
*/
//对按钮添加鼠标点击事件 方法2
/* redButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
frame.setBackground(Color.RED);
}
});*/
//对按钮添加鼠标进入事件 方法3
redButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
frame.setBackground(Color.RED);
}
});
redButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
frame.setBackground(Color.orange);
}
});
greenButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
frame.setBackground(Color.GREEN);
}
});
greenButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
frame.setBackground(Color.orange);
}
});
blueButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
frame.setBackground(Color.BLUE);
}
});
blueButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseExited(MouseEvent e) {
frame.setBackground(Color.orange);
}
});
//设置窗体关闭处理
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//窗体显示
frame.setVisible(true);
}
}
(多级)菜单
package GUI;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
/**
* 你输入的如果是非数字 字符,就取消你键盘录入的效果
*/
public class Driver {
public static void main(String[] args) {
//创建窗体对象
Frame frame=new Frame("金品梅");
//设置属性
frame.setBounds(100,200,640,480);
//设置布局为流式布局
frame.setLayout(new FlowLayout());
//创建菜单栏
MenuBar menuBar=new MenuBar();
//创建菜单
Menu menu1=new Menu("file");
Menu menu2=new Menu("open");
//创建菜单项
MenuItem menuItem1=new MenuItem("moives");
MenuItem menuItem2=new MenuItem("pictures");
MenuItem menuItem3=new MenuItem("books");
MenuItem menuItem4=new MenuItem("text");
MenuItem menuItem5=new MenuItem("exit system");
//谁添加谁
/*menu1.add(menuItem);
menuBar.add(menu1);*/
/**
* 多级菜单
*/
menu2.add(menuItem1);
menu2.add(menuItem2);
menu2.add(menuItem3);
menu2.add(menuItem4);
menu1.add(menu2);
menu1.add(menuItem5);
menuBar.add(menu1);
//设置菜单栏
frame.setMenuBar(menuBar);
/**
* 一级菜单
*/
//添加菜单项监听
menuItem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setTitle(menuItem1.getLabel());
}
});
menuItem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setTitle(menuItem2.getLabel());
}
});
menuItem3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setTitle(menuItem3.getLabel());
}
});
menuItem4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Runtime runtime=Runtime.getRuntime();
try {
runtime.exec("notepad");
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
menuItem5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
//设置窗体关闭处理
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//窗体显示
frame.setVisible(true);
}
}
posted on 2018-05-29 20:32 Indian_Mysore 阅读(199) 评论(0) 编辑 收藏 举报