黑马程序员_GUI
来源:互联网 发布:美版lol mac 编辑:程序博客网 时间:2024/05/16 10:46
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------
概述
GUI:图形用户接口
布局
容器中组件的排放方式,就是布局。
Frame
创建图形化界面
1.创建frame窗体
2.对窗体进行基本设置,大小、位置、布局等
3.定义组件
4.将组件通过窗体的add方法添加到窗体中
5.让窗体显示,通过setVisible(true);
事件监听机制
事件监听机制的特点:
1.事件源
1.事件源
2.事件
3.监听器
4.事件处理
事件源:awt包或swing包中的图形界面组建。
事件:每一个事件源都有自己特有对应事件和共性事件。
监听器:将可以触发某一个事件的动作(不止一个)封装到了监听器中。
以上三者在java中已经定义好了,直接获取对象来用就行,我们要做的事情就是对产生的事情进行处理。
窗体事件
public class AwtDemo {public static void main(String[] args) {Frame f = new Frame("my awt");f.setSize(500,400);f.setLocation(300, 200);f.setLayout(new FlowLayout());Button b = new Button("我是一个按钮");f.add(b);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});f.setVisible(true);}}
Action事件
public class FrameDemo {//定义该图形界面中所需的组件的引用private Frame f;private Button but;FrameDemo(){init();}public void init(){f = new Frame("my frame");//对frame进行基本设置f.setBounds(300, 100, 500, 400);f.setLayout(new FlowLayout());but = new Button("my button");//将组件添加到farme中f.add(but);//加载窗体上的事件myEvent();//显示窗体f.setVisible(true);}private void myEvent(){f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});//给按钮具备退出程序的功能//按钮是事件源//查阅button描述,发现按钮的特有监听器addActionListenerbut.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.exit(0);}});}public static void main(String[] args) {new FrameDemo();}}
鼠标事件 键盘事件
public class MouseAndKeyEvent {private Frame f;private Button but;private TextField tf;MouseAndKeyEvent(){init();}public void init(){f = new Frame("my frame");f.setBounds(300, 100, 500, 400);f.setLayout(new FlowLayout());tf = new TextField(20);but = new Button("my button");f.add(tf);f.add(but);myEvent();f.setVisible(true);}private void myEvent(){f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});but.addMouseListener(new MouseAdapter(){public void mouseEntered(MouseEvent e){System.out.println("鼠标进入该组件");}public void mouseClicked(MouseEvent e){if(e.getClickCount()==2)System.out.println("双击动作");}});but.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){int code = e.getKeyCode();if(code==KeyEvent.VK_ENTER)System.exit(0);if(e.isControlDown()&&code==KeyEvent.VK_1)System.out.println("ctrl+1");}});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();}}});}public static void main(String[] args) {new MouseAndKeyEvent();}}
练习-列出指定目录内容 对话框Dialog
public class MyWindowDemo {private Frame f;private TextField tf;private Button but;private TextArea ta;private Dialog d;private Label lab;private Button okBut;MyWindowDemo(){init();}public void init(){f = new Frame("my window");f.setBounds(300,100,600,500);f.setLayout(new FlowLayout());tf = new TextField(60);but = new Button("转到");ta = new TextArea(25,70);d = new Dialog(f,"提示信息",true);d.setBounds(400,200,300,100);d.setLayout(new FlowLayout());lab = new Label();okBut = new Button("确定");d.add(lab);d.add(okBut);f.add(tf);f.add(but);f.add(ta);myEvent();f.setVisible(true);}private void myEvent(){f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});but.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){showDir();}});d.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){d.setVisible(false);}});okBut.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){d.setVisible(false);}});tf.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){if(e.getKeyCode()==KeyEvent.VK_ENTER){showDir();}}});}private void showDir(){String dirPath = tf.getText();File dir = new File(dirPath);if(dir.exists() && dir.isDirectory()){ta.setText("");String[] names = dir.list();for(String name : names){ta.append(name+"\r\n");}}else{String info = "错误的路径:"+dirPath+"请重新输入";lab.setText(info);d.setVisible(true);}}public static void main(String[] args) {new MyWindowDemo();}}
菜单 练习-打开文件 练习-保存文件
public class MyMenuDemo {private Frame f;private MenuBar bar;private Menu fileMenu,subMenu;private MenuItem openItem,saveItem,closeItem,subItem;private FileDialog openDia,saveDia;private TextArea ta;private File file;MyMenuDemo(){init();}public void init(){f = new Frame("my window");f.setBounds(300,100,650,600);bar= new MenuBar();fileMenu = new Menu("文件");subMenu = new Menu("子菜单");subItem = new MenuItem("子条目");closeItem = new MenuItem("退出");openItem = new MenuItem("打开");saveItem = new MenuItem("保存");openDia = new FileDialog(f,"打开",FileDialog.LOAD);saveDia = new FileDialog(f,"保存",FileDialog.SAVE);ta = new TextArea();f.setMenuBar(bar);bar.add(fileMenu);fileMenu.add(subMenu);fileMenu.add(openItem);fileMenu.add(saveItem);fileMenu.add(closeItem);subMenu.add(subItem);f.add(ta);myEvent();f.setVisible(true);}public void myEvent(){f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});closeItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){System.exit(0);}});openItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){openDia.setVisible(true);String dirPath = openDia.getDirectory();String fileName = openDia.getFile();if(dirPath==null || fileName==null)return;ta.setText("");file = new File(dirPath,fileName);BufferedReader bufr = null;try{bufr = new BufferedReader(new FileReader(file));String line = null;while((line=bufr.readLine())!=null){ta.append(line+"\r\n");}}catch(IOException ex){throw new RuntimeException("读取失败");}finally{try{if(bufr!=null)bufr.close();}catch(IOException ex){throw new RuntimeException("读取关闭失败");}}}});saveItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){if(file==null){saveDia.setVisible(true);String dirPath = saveDia.getDirectory();String fileName = saveDia.getFile();if(dirPath==null || fileName==null)return;file = new File(dirPath,fileName);}BufferedWriter bufw = null;try{bufw = new BufferedWriter(new FileWriter(file));String text = ta.getText();bufw.write(text);bufw.flush();}catch(IOException ex){throw new RuntimeException("保存失败");}finally{try{if(bufw!=null)bufw.close();}catch(IOException ex){throw new RuntimeException("保存关闭失败");}}}});}public static void main(String[] args) {new MyMenuDemo();}}
-----------------------ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
0 0
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI 详谈
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI编程
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- 黑马程序员_GUI
- hive0.12+sqoop1.4 从mysql导入数据问题
- 典型DP_背包问题
- 无聊之破坏
- mysql行转列(综合利用if + sum)---为解决OSC的一个朋友的问题
- iOS系统GCD学习(7):dispatch_once
- 黑马程序员_GUI
- PL/SQL_使用复合数据类型3(多级集合)
- DNN摸索系列2: DNN 6 如何卸载模块
- 多式样ProgressBar
- 梯度下降(Gradient Descent)简析及matlab实现
- 蓝牙设计
- 用循环列表解决一个约瑟夫问题
- Android如何完全调试framework层代码
- 浅拷贝与深拷贝