Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单
* 创建图形化界面
* 1.创建frame窗体
* 2.对窗体进行基本设置
* 比如大小、位置、布局
* 3.定义组件
* 4.将组件通过窗体的add方法添加到窗体
* 5.让窗体显示,通过setVisible(true)
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class AwtDemo {
public static void main(String[] args){
Frame f=new Frame("我的窗口");//它默认的是边界布局
f.setLocation(300, 300);//定点距左边的距离
f.setSize(500, 400);
f.setLayout(new FlowLayout());
Button b=new Button("按钮");
f.add(b);
//f.addWindowListener(new MyWin());
//我们也可以写一个匿名内部类
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.out.println("关闭窗体");
System.exit(0);
}
public void windowActivated(WindowEvent e){
System.out.println("我要活动了");
}
public void windowOpened(WindowEvent e){
System.out.println("我被打开了");
}
});
f.setVisible(true);
}
}
/*
interface Lis{
void close();
}
abstract class WinLis implements Lis{
// 复写接口中的方法,要用
// 某一个接口,必须复写
// 其中所有的方法,才能
// 建立对象,然后传递给函数,
// 用到abstract是因为这个里
// 面没有内容,如果调用的话
// 没有什么意义,所以抽象化了,
// 不让创建对象
public void close(){
}
}
class MyWin implements WindowListener{
//复写7个方法,可是只用了其中一种方法
//其他动作都没有用到,可是却必须复与。
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
//
}
*/
//因为WindowListener的子类WindowAdapter已结实现了WindowListener接口
//并已经覆盖了其中所有的方法,那么我只要继承自Windowadapter覆盖需要的方法即可
//在图形化界面有两个包必须导入,java.awt.*;还有一个是java.awt.event.*;
class MyWin extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.out.println("关闭窗体");
System.exit(0);
}
}
图形界面之鼠标键盘点击事件:
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MouseAndKeyEvent {
private Frame f;
private Button but;
private TextField tf;
MouseAndKeyEvent(){
init();
}
public void init(){
f=new Frame("我的窗口");
f.setBounds(300,100,600,500);
but=new Button("按钮");
tf=new TextField(10);//表示长度为10
f.add(tf);
f.add(but);
myEvent();
f.setLayout(new FlowLayout());
f.setVisible(true);
}
public void myEvent(){
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
//在文本框里只能输入数字
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e){
int code=e.getKeyCode();
if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9))
System.out.println(code+"..是不合法的数字");
e.consume();//使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件
}
});
//but添加一个键盘监听
but.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if(e.getKeyCode()==KeyEvent.VK_ENTER)
System.exit(0);
System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());
//键盘的组合键
if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)
System.out.println("Ctrl+Enter is run");
}
});
but.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("action ok");
}
});
but.addMouseListener(new MouseAdapter() {
private int count=1;
private int clickCount=1;
public void mouseEntered(MouseEvent e){
System.out.println("鼠标进入到该组件"+count++);
}
public void mouseClicked(MouseEvent e){
System.out.println("点击动作"+clickCount++);
}
public void mouseClicked2(MouseEvent e){
if(e.getClickCount()==2)
System.out.println("双击动作"+clickCount++);
}
});
}
public static void main(String []args){
new MouseAndKeyEvent();
}
}
图形界面之列出指定目录内容:
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
public class MyWindowDemo {
private Frame f;
private TextField tf;
private Button but;
private Button okBut;
private TextArea ta;
private Dialog d;
private Label lab;//把文字封装成label对象添加进去。
MyWindowDemo(){
init();
}
public void init(){
f=new Frame("我的窗口");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
tf=new TextField(60);
but=new Button("转到");
d=new Dialog(f,"提示信息-self",true);//d本身是一个窗体,不能加到Frame中。
d.setBounds(400,200,240,150);
d.setLayout(new FlowLayout());
lab=new Label();
okBut=new Button("确定");
d.add(lab);
d.add(okBut);
ta=new TextArea(25, 70);
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
f.setVisible(true);
}
public void myEvent(){
okBut.addActionListener(new ActionListener(){
@Override
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();
//tf.setText("");//清除textField的内容
}
});
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e ){
System.exit(0);
}
});
}
private void showDir(){
String dirPath=tf.getText();
//ta.setText(text);//把获取到文本放到TextArea
//System.out.println(text);
File dir=new File(dirPath);
if(dir.exists()&&dir.isDirectory()){
ta.setText("");//把之前路径找到的文件清除
String[] names=dir.list();
for(String name:names){
//对于有很多文件的话,我们可以把它们存到String Builder中
//append,表示将给定文本追加到文本区的当前文本。
ta.append(name+"\n\r");//用到换行等
}
}
else{
String info="你输入的信息:"+dirPath+"是错误的,请重输";
lab.setText(info);
d.setVisible(true);
}
}
public static void main(String [] args){
new MyWindowDemo();
}
}
Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单的更多相关文章
- 图形用户界面(GUI)事件监听机制——窗体事件Frame
窗体事件.Button的使用 本事例给出一个窗体的定义方法,基本属性设置,给窗体添加退出按钮,让按钮具备退出的功能.熟悉监听器的使用 按钮就是事件源. 那么选择哪一个监听器呢? 通过关闭窗体事例了解到 ...
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- java基础之IO流(一)字节流
java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...
- Java基础之IO流整理
Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- 4.JAVA之GUI编程事件监听机制
事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...
- 创建图形用户界面GUI和事件监听机制的简单实现(java)
创建图形化界面 1.创建Frame窗体 2.对窗体进行基本设置 比如:大小.位置.布局 3.定义组件 4.将组建通过窗体添加到窗体中 5.让窗体显示,通过setVisib ...
- GUI编程笔记(java)05:GUI事件监听机制原理和举例说明
1.事件监听机制: A:事件源 事件发生的地方 B:事件 就是要发生的事情 C:事件处理 就是针对发生的事情做 ...
- java 事件监听机制组成
事件源(组件) 事件(Event) 监听器(Listener) 事件处理(引发事件后处理方式) 事件监听机制流程图 务必记牢: 确定事件源(容器或组件) 通过事件源对象的addXXXListener( ...
随机推荐
- NOIP提高组2010 乌龟棋
小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点. 乌 ...
- Codeforces Round#432 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. Div2A 小判断题 Div2B 小判断题,合法的条件是|AB|=|BC|且三点不共线 Div1A 类比二维.三维空间,可以猜测n太大的时候没 ...
- Linux查看日志方法总结(1)
注:日志文件为:test.log 1.tail -f test.log 查看当前打印的日志(平时就知道这方法!打印出的长度有限制.) 以下为网上搜集的: 2.先必须了解两个最基本的命令: tail ...
- 第四节基础篇 - SELECT 语句详解
4.1 基本的SELECT语句 select * from T_WEATHER select cityname from t_weather 4.2 数学符号条件(>.<.>=.&l ...
- 数据库的事务、ACID及隔离级别
事务 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么不做,是一个不可分割的工作单位.例如,在关系数据库中,一条或一组SQL语句.整个程序都可以是一个事务. 事务和程序是两个概念,一个程 ...
- Python中高阶函数讲解
高阶函数讲解 1. 常规高阶函数 递归函数 格式:def func_name(variable): '''__doc__'''#函数的说明文档 if 条件表达式:#限制递归退出值 pass retur ...
- Fabrik – 在浏览器中协作构建,可视化,设计神经网络
Fabrik是一个在线协作平台,通过简单的拖放界面来构建,可视化和训练深度学习模型. 它允许研究人员使用Web GUI协同开发和调试模型,该GUI支持导入,编辑和导出广泛流行的框架(如Caffe,Ke ...
- Go 实现判断变量是否为合法数字 IsNumeric 算法
[转] http://www.syyong.com/Go/Go-to-determine-whether-the-variable-is-a-legal-digital-algorithm.html ...
- RabbitMQ用户管理
rabbitmq常用命令 add_user <UserName> <Password> delete_user <UserName> chan ...
- Spring Cloud 服务端注册与客户端调用
Spring Cloud 服务端注册与客户端调用 上一篇中,我们已经把Spring Cloud的服务注册中心Eureka搭建起来了,这一章,我们讲解如何将服务注册到Eureka,以及客户端如何调用服务 ...