黑马程序员——Java基础知识之DUI(图形用户界面)
来源:互联网 发布:淘宝店铺入驻有什么好 编辑:程序博客网 时间:2024/04/27 17:22
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
(一)什么GUI?
1、图形用户界面,用于计算机与用户交互的一种方式,英文是GraphicalUser Interface
2、javaGUI:
java也将这种界面封装为对象,其中的对象都放在了两个包中:java.Awt包和javax.Swing包。
ava.Awt包:Abstract Window Toolkit,即抽象窗口工具包。要调用本地系统方法实现功能,属重量级控件。
javax.Swing包:在AWT的基础上建立的一套图形界面系统,其中提供了更多的组件,且完全由java实现,增强了移植性,属轻量级控件。
3、计算机的两种交互方式与用户:
GUI: Graphical User Interface,图形用户接口,用图形方式,来显示计算机操作界面,方便直观。
CLI: Command LineUser Interface,命令行用户接口,即常见的Dos命令行操作,须记住一些命令,操作不直观。
(二)、Awt的体系图
注释:Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。
(三)、布局管理器
就是容器中的组件排列方式
布局管理器的特点和分类:
(四)、窗体创建的步骤
①创建Frame窗体:
Frame f = new Frame(“my Frame”);//可设置标题,即窗体名字
②对窗体进行基本设置:如大小,位置,布局等:
f.setSize(int wight,int hight);//窗体大小设置
f.setLocation(int x,int y);//窗体显示位置设置,横纵坐标
f.setBounds(int x,int y,int wight,int hight),也可以直接用这个方法对大小和位置设置
f.setLayout(Layout layout),参数为指定的布局管理器,如FlowLayout
③定义组件:
如Button b = new Button(“my Button”);//可设置组件的名称
④将组件通过窗体的add方法添加到窗体中:
f.add(b);//将按钮组件添加进窗体
⑤让窗体显示:
f.setVisible(boolean b);//通过设置参数是true还是false是否显示窗体
例子程序:
class AwtFirstDemo { public static void main(String[] args) { //创建Frame窗体: Frame f = new Frame("my Frame");//可设置标题 //对窗体进行基本设置:如大小,位置,布局等: f.setSize(500,100);//窗体大小设置 f.setLocation(300,150);//窗体显示位置设置,横纵坐标 //也可以直接用这个方法对大小和位置设置 // f.setBounds(int x,int y,int wight,int hight); //参数为指定的布局管理器,如FlowLayout f.setLayout(new FlowLayout()); //定义组件: Button b = new Button("my Button");//可设置组件的名称 //将组件通过窗体的add方法添加到窗体中: f.add(b);//将按钮组件添加进窗体 //让窗体显示://通过设置参数是true还是false是否显示窗体 f.setVisible(true); } }
(四)、事件监听机制
应用该机制的流程:
①事件源(组件):awt或swing包中的那些图形界面组件
②事件(Event):每一个事件源都有自己特有的对应事件和共性事件
③监听器(Listener):将可触发某一事件的动作(不只一个动作),都封装到侦听器中。
④事件处理:引发事件后的处理方式。
例子程序:
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.out.println("我关"); System.exit(0); } //监听并处理 public void windowActivated(WindowEvent e) { System.out.println("我活了。"); } //监听打开动作,并处理 public void windowOpened(WindowEvent e) { System.out.println("我被打开了,hahahhahah"); } });
例子程序:
import java.awt.*;import java.awt.event.*;class FrameDemo{ //定义该图形中所需的组件的引用。 private Frame f; private Button but; FrameDemo() { init(); } public void init() { f = new Frame("my frame"); //对frame进行基本设置。 f.setBounds(300,100,600,500); f.setLayout(new FlowLayout()); but = new Button("my button"); //将组件添加到frame中 f.add(but); //加载一下窗体上事件。 myEvent(); //显示窗体; f.setVisible(true); } private void myEvent() { f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); //让按钮具备退出程序的功能 /* 按钮就是事件源。 那么选择哪个监听器呢? 通过关闭窗体示例了解到,想要知道哪个组件具备什么样的特有监听器。 需要查看该组件对象的功能。 通过查阅button的描述。发现按钮支持一个特有监听addActionListener。 */ but.addActionListener(new ActionListener() { private int count = 1; public void actionPerformed(ActionEvent e) { //System.out.println("退出,按钮干的"); //System.exit(0); //f.add(new Button("Button-"+(count++))); //f.setVisible(true); //f.validate(); //System.out.println(e.getSource()); Button b = (Button)e.getSource(); Frame f1 = (Frame)b.getParent(); f1.add(new Button("button-"+count++)); f1.validate(); } }); } public static void main(String[] args) { new FrameDemo(); }}
重要:鼠标和键盘的监听事件例子程序
例子程序一:鼠标监听
but.addMouseListener(new MouseAdapter() { //int count=0; public void mouseClicked(MouseEvent e) { // if(e.getClickCount()==2) // System.out.println("鼠标双击按钮"); // System.out.println("鼠标单击按钮"); //System.exit(0); showFile();//显示到文本区中 } /* public void mouseEntered(MouseEvent e) { System.out.println("鼠标放进入按钮范围"+(++count)+"次"); } */ });
例子程序二:键盘监听
//添加键盘监听but.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER) //System.exit(0); System.out.println("ctrl+enter is run"); //System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode()); } });
其他知识点:
例子程序:将路径下的目录或文件列出
//将路径下的目录或文件列出 private void showFile() { String path=tf.getText();//获取文本框内容 File file=new File(path);//将路径封装成文件对象 //判断是否存在 if(file.exists()) { ta.setText("");//清空文本区中的内容 //如果是目录 if(file.isDirectory()) { String[] dir=file.list();//列出目录下的文件和目录 //遍历 for (String name : dir) { ta.append(name+"\r\n");//添加到文本区中 } } else ta.append(file.getName());//如果是文件,则只显示该文件的名字 } else System.out.println("您输入的路径不存在"); } public static void main(String[] args) { //运行窗体 new KeyAndMouseEvent(); }
- 黑马程序员——Java基础知识之DUI(图形用户界面)
- 黑马程序员——Java基础---GUI(图形用户界面)
- 黑马程序员——Java GUI(图形用户界面)
- 黑马程序员,Java基础知识九:GUI图形用户界面
- 黑马程序员——15Java图形用户界面GUI
- 黑马程序员—java基础—GUI图形用户界面编程
- 黑马程序员java学习—GUI(图形用户界面)
- 黑马程序员—java基础学习--GUI( 图形用户界面 )
- 黑马程序员--java图形用户界面
- 黑马程序员-----java图形用户界面
- 黑马程序员——图形用户界面GUI
- 黑马程序员——day22GUI图形用户界面
- 黑马程序员——GUI图形用户界面
- 黑马程序员——GUI 图形用户界面
- 黑马程序员——GUI(图形用户界面)
- 黑马程序员——图形用户界面GUI
- 黑马程序员—GUI(图形用户界面)
- 黑马程序员—GUI图形用户界面
- 4、流程控制语句——Flow Control Statement
- java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText
- 第11周 程序阅读——继承和派生 自选阅读(3)
- poj 1719(二分图匹配)
- 5、理解面向对象程序设计——封装
- 黑马程序员——Java基础知识之DUI(图形用户界面)
- 快速获取游客和用户IP的具体实现方法
- POJ3045 Cow Acrobats (贪心)
- 6、面向对象之封装
- K-L变换和PCA的区别
- windows程序设计——窗口类
- leetcode_Rotate Image
- C++ 自动更新
- 黑马程序员——高新技术——反射