黑马程序员---java学习笔记之GUI
2014-01-11 22:07
591 查看
1、GUI,图像用户接口,是与命令行的交互模式相区别的。
2、java中有两个GUI的包,一个是java.Awt,另一个是javax.Swing.
3、java.Awt比较依赖于平台,意思是说,用该包做出来的界面风格与操作系统平台是有关系的,windows下和linux下是有些细微差别的,属于重量级组件,而javax.Swing包做出的界面什么样的就是什么样,不会随着操作系统平台的不同而不同,属于轻量级组件。
4、AWT包中主要类的层级关系:
Component
|---Container
|---Window
|---Frame
|---Dialog
|---FileDialog
|---Panel
|---Button
|---Checkbox
|---Label
|---TextComponent
|---TextField
|---TextArea
5、Container作为一个组件,本身也可以通过add方法添加组件。
6、布局管理器有:流式布局,边界式布局,网格布局,网格包式布局,卡片式布局,坐标式布局。
7、一个窗体可以使用多个形式的布局管理器,这可以通过面板(Panel)实现,每个面板可以使用一种布局管理器。
8、事件监听机制:
a):事件源
b):事件
c):监听器
d):事件处理
9、监听器结尾都是listener。
10、窗体事件----关闭
12、给某按钮添加监听器
13、给按钮添加活动监听器ActionListener和给按钮添加鼠标事件监听器MouseListener,事件触发监听器时,后者的处理函数先被执行。示例如下:
14、鼠标双击事件捕获并处理
2、java中有两个GUI的包,一个是java.Awt,另一个是javax.Swing.
3、java.Awt比较依赖于平台,意思是说,用该包做出来的界面风格与操作系统平台是有关系的,windows下和linux下是有些细微差别的,属于重量级组件,而javax.Swing包做出的界面什么样的就是什么样,不会随着操作系统平台的不同而不同,属于轻量级组件。
4、AWT包中主要类的层级关系:
Component
|---Container
|---Window
|---Frame
|---Dialog
|---FileDialog
|---Panel
|---Button
|---Checkbox
|---Label
|---TextComponent
|---TextField
|---TextArea
5、Container作为一个组件,本身也可以通过add方法添加组件。
6、布局管理器有:流式布局,边界式布局,网格布局,网格包式布局,卡片式布局,坐标式布局。
7、一个窗体可以使用多个形式的布局管理器,这可以通过面板(Panel)实现,每个面板可以使用一种布局管理器。
8、事件监听机制:
a):事件源
b):事件
c):监听器
d):事件处理
9、监听器结尾都是listener。
10、窗体事件----关闭
Frame f = new Frame("myFrameDemo"); f.setLocation(300,200); f.setSize(500,400); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setVisible(true);11、窗口监听器WindowListener 的方法windowActivated,在被操作窗口处于最前端时即被调用;而方法windowOpened方法是在被操作窗口刚被打开时会被调用。
12、给某按钮添加监听器
import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class FrameButtonDemo { /** *该程序的写法把图形用户组件的操作放在了init()方法中,把事件写在了myEvent方法中 *这种分开的写法可以使程序看起来更有条理性。 */ public static void main(String[] args) { // TODO Auto-generated method stub new FrameButton(); } } class FrameButton { private Frame f; private Button b; FrameButton() { init(); } void init() { f = new Frame("My Frame"); f.setBounds(300,100,500,400); f.setLayout(new FlowLayout()); b = new Button("按钮1"); f.add(b); myEvent(); f.setVisible(true); } void myEvent() { f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(e.toString()); System.exit(0); } }); } }
13、给按钮添加活动监听器ActionListener和给按钮添加鼠标事件监听器MouseListener,事件触发监听器时,后者的处理函数先被执行。示例如下:
b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("action"); } }); b.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { System.out.println("mouse"); } });打印结果是mouse(换行)action
14、鼠标双击事件捕获并处理
b.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { //间隔较短的双击可被捕获,间隔较大的双击(可视为两次独立的单击)则不能被捕获 //这说明双击和两次单击是有点儿区别的。 if( e.getClickCount() == 2 ) System.out.println("双击被捕获"); } });15、
b.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { //某个键的名字是单个字符时,可以通过KeyEvent类中的getKeyChar方法获取 System.out.println(e.getKeyChar()+"..."+e.getKeyCode()); //某个键的名字是多个字符时就要通过getKeyText方法获取键名 System.out.println(KeyEvent.getKeyText(e.getKeyCode())); } });16、视频中的例题
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.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; public class TextDemo { public static void main(String[] args) { // TODO Auto-generated method stub new FrameText(); } } class FrameText { private Frame f; private TextField tf; private TextArea ta; private Button b; FrameText() { init(); } void init() { f = new Frame("TextFrameDemo"); f.setBounds(300,100,600,500); f.setLayout(new FlowLayout()); tf = new TextField(40); b = new Button("转到"); ta = new TextArea(25,70); 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) { String strTemp = tf.getText(); File file = new File(strTemp); ta.setText(""); if( file.exists() ) { if( !file.isDirectory() ) ta.append(f.toString()+"\r\n"); else process(file,0); tf.setText(""); } else { final Dialog d = new Dialog(f,"提示信息",true); Label l = new Label("输入地址:"+strTemp+"错误!"); Button okb = new Button("确定"); d.setBounds(300,100,240,160); d.setLayout(new FlowLayout()); d.add(l); d.add(okb); d.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { d.setVisible(false); } }); okb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { d.setVisible(false); } }); d.setVisible(true); } } }); } private void process(File dir,int level) { File[] files = dir.listFiles(); ta.append(printBlank(level)+dir.getName()+"\r\n"); level++; for( File file : files ) { if( file.isDirectory() ) { process(file,level); } else { ta.append(printBlank(level)+file.getName()+"\r\n"); } } } private String printBlank(int level) { StringBuilder sb = new StringBuilder(); for( int i = 0; i < level; i++ ) sb.append(" "); sb.append("|---"); return sb.toString(); } }17、给一个窗体添加菜单
import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class FrameMenuDemo { public static void main(String[] args) { new FrameMenu(); } } class FrameMenu { private Frame f; private MenuBar mb; private Menu m; private Menu mi0; private MenuItem mi1; private MenuItem m1; FrameMenu() { init(); } void init() { f = new Frame("MyFrameMenu"); f.setBounds(300,100,500,400); f.setLayout(new FlowLayout()); mb = new MenuBar(); m = new Menu("文件"); mi0 = new Menu("子菜单"); mi1 = new MenuItem("退出"); m1 = new MenuItem("子条目"); mb.add(m); m.add(mi0); m.add(mi1); mi0.add(m1); f.setMenuBar(mb); myEvent(); f.setVisible(true); } void myEvent() { f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } }); mi1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); } }
相关文章推荐
- 黑马程序员—20—java基础:有关GUI图形用户界面学习笔记和学习心得体会
- 黑马程序员java学习笔记——GUI图形化界面
- 黑马程序员——Java学习笔记之⑥——“图形界面GUI”
- 黑马程序员 java学习笔记 Day6:GUI
- 黑马程序员 java学习笔记——GUI
- 黑马程序员---java学习笔记之GUI2
- 黑马程序员-学习笔记java基础-语言概述
- 黑马程序员_JAVA学习笔记12
- 黑马程序员-java基础学习笔记第二篇
- java学习笔记图形程序设计及GUI应用小结(1)
- 黑马程序员_JAVA 学习笔记23 WEB篇10
- 黑马程序员--Java基础加强学习笔记之重载和覆写、可变参数、枚举
- 黑马程序员_毕向东_Java基础视频教程学习笔记(三)
- 黑马程序员——JAVA学习笔记——语言基础
- 黑马程序员 java学习笔记——面向对象1:封装
- 黑马程序员—Java基础学习笔记之7K月薪面试题破解_交通灯管理系统
- 黑马程序员——JAVA学习笔记——Ierrator与Map
- 黑马程序员--2015.6.29java基础笔记---GUI总结
- 黑马程序员——Java学习笔记之②——“面向对象”
- Java学习笔记13——Swing开发GUI程序