(黑马程序员)学习笔记,GUI

来源:互联网 发布:js 工作流引擎 编辑:程序博客网 时间:2024/06/11 14:06

首先学习创建一个窗口,并且监听它的关闭、前置、打开等动作

package gui;/* * 创建图形化界面 * 1. 创建frame窗体 * 2. 对窗体进行基本设置,如大小f.setSize(400,300);,位置f.setLocation(300,400);,布局f.setLayout(new FlowLayout());等 * 3. 定义组件 * 4. 将组件通过窗体的add方法添加到窗体中 * 5. 让窗体显示setVisible(true) *  * 事件监听机制的特点 * 1. 事件源:awt或swing中的那些图形界面组件 * 2. 事件:每一件事都有自己特有的对应时间和共性事件 * 3. 监听器:将可以出发某一件事的动作(不止一个动作)都封装到监听其中 * 4. 事件处理:这是我们要做的事,前三点java都已经定义好了,直接获取对象就可以用 *  */import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class AwtDemo {public static void main(String[] args) {//定义一个窗体Frame f = new Frame("my awt");//设置窗口大小f.setSize(400,300);//设置窗口打开位置f.setLocation(400,300);//设置窗口内布局f.setLayout(new FlowLayout());//定义一个按钮Button b = new Button("我是一个按钮");//将按钮添加到窗口中f.add(b);//添加窗口监听器,参数需要一个继承WindowEvent//f.addWindowListener(new MyWin());//添加窗口监听器,也可以使用匿名内部类去写f.addWindowListener(new WindowAdapter(){//监听窗口关闭动作public void windowClosing(WindowEvent e){System.exit(0);}//监听窗口激活动作public void windowActivated(WindowEvent e){System.out.println("激活窗口");}//监听窗口打开动作public void windowOpened(WindowEvent e){System.out.println("打开窗口");}});//设置窗口可见f.setVisible(true);System.out.println("hello world");}}//继承WindowEvent,用于窗口监听class MyWin extends WindowAdapter{//监听窗口关闭动作public void windowClosing(WindowEvent e){System.out.println("closing");//退出窗口System.exit(0);}}

接下来学习键盘和鼠标的监听

package gui;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 b;private TextField tf;public MouseAndKeyEvent(){init();} private void init(){f= new Frame();f.setBounds(600, 300, 500, 400);f.setLayout(new FlowLayout());b = new Button("关闭");f.add(b);tf = new TextField(20);f.add(tf);myEvent();f.setVisible(true);} private void myEvent(){//监听窗口关闭事件f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){System.out.println("关闭窗口");System.exit(0);}});//监听按钮点击事件b.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {System.out.println("点击关闭");System.exit(0);}});//监听鼠标事件b.addMouseListener(new MouseAdapter() {int i=1;//监听鼠标进入public void mouseEntered(MouseEvent e){System.out.println("鼠标进入"+i++);}//监听鼠标双击事件public void mouseClicked(MouseEvent e){if(e.getClickCount()==2){System.out.println("双击");}}});//监听按钮键盘事件b.addKeyListener(new KeyAdapter() {//监听键盘键入回车时退出界面public void keyPressed(KeyEvent e){//System.out.println(e.getKeyText(e.getKeyCode()));if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER){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)&&!(code>=KeyEvent.VK_NUMPAD0&&code<=KeyEvent.VK_NUMPAD9)){System.out.println("不是数字");e.consume();}}});}public static void main(String[] args) {new MouseAndKeyEvent();}}

最后利用上边学到的知识点做个小练习

练习:制作一个简单窗口,使其在上文本框中输入文件夹地址,点击按钮获取该文件夹下所有文件

package test;/* * 练习:制作一个简单窗口,使其在上文本框中输入文件夹地址,点击按钮获取该文件夹下所有文件 * 大致结构如图: * ------------------------------------------ * |-----------------| * ||  此处输入|{按钮}| * ||文件夹地址|| * |-----------------| * || * |---------------------------------| * |||| * ||此处显示文件夹下|| * ||所有文件的目录|| * |||| * |||| * |||| * |||| * |||| * |---------------------------------| * || * ------------------------------------------ */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 FrameTest {private Frame f;private TextField tf;private TextArea ta;private Button b;private Dialog d;private Label l;private Button b2;public FrameTest(){init();}private void init(){//窗口基本设置f = new Frame();f.setBounds(600,300,500,400);f.setLayout(new FlowLayout());//创建窗口中其他组件tf = new TextField(30);ta = new TextArea(15,40);b = new Button("跳转");//创建对话窗口,并设置d= new Dialog(f,"提示信息",true);d.setLayout(new FlowLayout());//对话窗口中其他组件l = new Label();b2 = new Button("确定");//将组件添加到对话窗口中d.add(l);d.add(b2);//将组件添加到窗口中f.add(tf);f.add(b);f.add(ta);//事件处理myEvent();f.setVisible(true);}private void myEvent(){//监听窗口关闭f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e){System.exit(0);}});//监听按钮“”点击b.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {search();}});//监听对话窗口中的按钮,回车关闭b2.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e) {if(e.getKeyCode()==KeyEvent.VK_ENTER){d.setVisible(false);tf.setText("");}}});//监听对话窗口中的按钮b2.addActionListener(new ActionListener() {//点击按钮退出提示public void actionPerformed(ActionEvent e) {d.setVisible(false);}});//监听对话窗口,点X关闭d.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){d.setVisible(false);}});//在文本框中回车搜索,ESC退出tf.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e) {if(e.getKeyCode()==KeyEvent.VK_ENTER){search();}if(e.getKeyCode()==KeyEvent.VK_ESCAPE){System.exit(0);}}});}//根据传入文件夹,获取文件夹的文件列表private void search(){//文本框的获取文本方法getText()String dir = tf.getText();File file = new File(dir);//判断文本框中是否为存在的文件夹if(file.exists()&&file.isDirectory()){//每回清空下方文本域ta.setText("");File[] files = file.listFiles();for(File f : files){ta.append(f.toString()+"\r\n");}}else{//不是文件夹的时候弹出对话框提示,非法路径l.setText(file.toString()+"不是有效路径,请重新输入");d.setBounds(750,450,200+l.getText().length()*2,100);d.setVisible(true);}}public static void main(String[] args) {new FrameTest();}}


0 0
原创粉丝点击