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( ...
随机推荐
- 网络编程基础API
1.预备知识 网络字节序 1.TCP/IP协议规定,网络数据流应采用大端字节序 0x12345678 小端存储:78存储在低地址 大端存储:12存储在低地址 网络字节序和主机字节序的转换 #inclu ...
- Codeforces Round#432 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. Div2A 小判断题 Div2B 小判断题,合法的条件是|AB|=|BC|且三点不共线 Div1A 类比二维.三维空间,可以猜测n太大的时候没 ...
- Thinkphp中的U函数(Thinkphp3.2.3版本)
U函数的作用是根据当前的URL设置生成对应的URL地址,使用U函数可以确保项目在移植过程中不受环境的影响. U方法的定义规则如下(方括号内参数根据实际应用决定): U('地址表达式',['参数'],[ ...
- ubuntu上的附件-终端和用快捷键ctrl+alt+f1 有啥区别
ctrl +alt +Fn 打开的是模拟终端,简单说来,linux系统一开机会自动打开6个模拟终端,然后自动切换到其中一个(一般来说是切换到图形界面的那个也就是说窗口管理器是在这6个模拟终端中运行的) ...
- Python开发——排队问题随机模拟分析
案例:主要是基于"蒙特卡罗思想",求解排队等待时间问题 场景:厕所排队问题 1.两场电影结束时间相隔较长,互不影响: 2.每场电影结束之后会有20个人想上厕所: 3.这20个人会在 ...
- 博客迁移,新地址:bfsan.github.io
博客的新内容会在新地址发布(暂时),后期可能会考虑做一个整合同步.
- 566. Reshape the Matrix
In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new o ...
- PHP 常用函数集合
PHP is_numeric() 函数 由 陈 创建, 最后一次修改 2016-12-02 定义和用法 is_numeric() - 检测变量是否为数字或数字字符串 语法 bool is_numeri ...
- Bootstrap3 排版-内联文本元素
标记文本 突出显示的文本由于其相关性在另一个上下文中,使用<mark>标记. You can use the mark tag to highlight text. You can use ...
- IT男的别样人生,爱折腾,竟然辞职跑丽江去了
深圳待了4年,在深圳腾讯总部任职,北漂了5年多,任某知名团购公司CTO,有了孩子以后才知道自己想要什么 2015年4月,我和老婆还有6个月的儿子丽江游, 却在旅行的第四天, 买下了位于束河古镇正门的高 ...