黑马程序员-------图形化用户交互---GUI
------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
两种用于用户操作的界面:
图形化界面 GUI:
命令行 CLI:
GUI:
Graphical User Interface (图形用户接口)
用图形方式,来显示计算机操作界面,这样更方便直观,
CLI:
Command line User Interface(命令行用户接口)
就是常见的Dos命令操作,
需要记忆一些常用的命令,操作不直观.
举例:
比如:创建文件夹,或者删除文件夹等
java为GUI提供对象在Java.Awt和javax.Swing两个包中
Awt与Swing
java.Awt: Abstract Window ToolKit(抽象窗口工具包),需要调用本地系统方法实现功能,属重量级控件.
javaxSwing:在AWT的基础上,建立的一套图新界面系统,其中提供了更多的组件,而且完全由java实现,增强了移植
属轻量级控件
Awt组件:
Component
/ |----Button 按钮
容器 Container |---lanle 标签
| | |----checkBoz 复选框
窗口Window panel 面板 |-----TextComponent 文本组件
| | / \
框架Frame Dialog对话框 TextArea文本区域 TextField 文本框
|
FileDialog文本对话框
特殊组件 : Container 作为一个组件里面可以添加组件
布局管理器
容器中的组件的排放方式,也就是布局
常见的布局管理器;
FlowLayout(流式布局管理器)
从左到右的顺序排列
Panel默认的布局管理器
BorderLayout(边界布局管理器)
东南西北中
Frame默认布局管理器
GridLayout(网格布局管理器)
规则的矩阵
CardLayout(卡片布局管理器)
选项卡
GridBagLayout(网格包布局管理器)
非规则的矩阵
创建交互界面思路:
1.创建一个frame窗体
2.对窗体进行基本设置
比如大小,位置,布局.
3.定义组件
4.将组件通过窗体的add方法添加到窗体中.
5.让窗体显示,通过setVisible(true)
import java.awt.*;
class AwtDemo
{
public static void main(String[] args)
{
Frame f = new Frame("my awt");
f.setSize(500,400);//设置初始化大小500是横坐标(款),100是纵坐标(长)
f.setLocation(400,400); //初始化设置默认显示位置(横坐标,纵坐标)
f.setVisible(true); //设置显示隐藏
//添加按钮
Button b = new Button("点击添加");
f.add(b);
f.setLayout(new FlowLayout());//设置布局管理格式
//System.out.println("Hello Word");
}
}
事件监听机制组成
事件源(组件)
事件(Event)
监听器(Listener)
事件处理(引发事件后处理方式)
事件监听机制个点:
事件源:Awt包或者Swing包中的那些图形界面组件:
事件: 每一个事件源都有自己特有的对应事件和共性事件
监听器: 将可以触发某一个事件的动作(不止一个动作)都封装到了监听器中
以上三者,在java中定义好了,
直接获取对象来用就可以了.
我们要做的事情就是,对产生动作进行处理.
添加监听器:
void addWindowListener(WindowListener l );
添加窗体监听器,以从此窗口接受窗口事件
窗口监听实例---关闭窗口:
import java.awt.*;
import java.awt.event.*;
class AwtDemo1
{
public static void main(String[] args)
{
Frame f = new Frame("Awt Demo");
f.setSize(500,400); //设置窗口大小
f.setLocation(500,600); //设置窗口出现位置
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);
}
});//添加监听器
f.setVisible(true); //显示组件
}
}
/*
class MyWin implements WindowListener
{
//覆盖7个方法.可是只需要使用到关闭动作方法
//其他动作都没用到,可是却必须复写
}
*/
//因为WindowListener的子类WindowAdapter已经时间了WindowListener接口
//并覆盖了其中的所有方法,那么我们只需要继承自windowAdapter覆盖需要的方法即可
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
// System.out.println("关闭窗口---"+e);
System.exit(0);
}
}
void addKeyListener(KeyListener l);
添加键盘监听器,以从此键盘接受键盘事件
void addMouseListener(MouseListener l);
添加鼠标监听器,以从此鼠标接受鼠标事件
void addActionListener(ActionListener l);
添加活动监听器,以从此活动来接受活动事件键盘监听事件实例:
import java.awt.*;
import java.awt.event.*;
class MouseAndKeyEvent
{
MouseAndKeyEvent()
{
init();
}
private Frame f;
private Button but;
private TextField tf;
public void init()
{
f=new Frame("Mouse");
//初始化窗口大小,出现位置
f.setBounds(400,500,600,500);
f.setLayout(new FlowLayout());//设置布局管理方式
tf = new TextField(20);
f.add(tf);
but = new Button("点击激活");
f.add(but);
myAction();
f.setVisible(true);
}
private void myAction()
{ //窗口监听器 监听器:Listenrt
//顺序: 添加适配器-->多个方法是用适配器,一个方法是用监听器-->覆盖方法-->添加事件
f.addWindowListener(new WindowAdapter()//(方法太多使用适配器)
{
//even 事件
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//鼠标监听器
but.addMouseListener(new MouseAdapter()//(鼠标适配器)
{
private int count=0;
public void mouseEntered(MouseEvent e)//event 事件
{
System.out.println("鼠标事件"+count++);
}
//鼠标点击事件
private int ClickedCount = 0;
public void mouseClicked(MouseEvent e)//鼠标事件
{
if(e.getClickCount()==2)
System.out.println("鼠标点击事件"+ClickedCount++);
}
});
//给键盘添加监听器
but.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.isControlDown()&&e.getKeyCode()==e.VK_S)//isContorlDown()//是否按下Control
//System.out.println("Control + s");
System.exit(0);
// System.out.println(Event.getKeyText(e.getKeyCode())+":::"+e.getKeyCode());
}
});
//监听键盘
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
int code=e.getKeyCode();
//定义限制文本框输入的字符
if (!(code>=e.VK_0 && code<=e.VK_9 || code==e.VK_BACK_SPACE))
{
System.out.println(code+"非法的");
e.consume();//屏蔽键
}
}
});
}
public static void main(String[] args)
{
new MouseAndKeyEvent();
}
}
练习 :
在文本框中输入目录,点击"转到"按钮,.将该目录的文件以及文件名称列在下面的文本区域中
思路:
1.制作图形化界面
需要用到:
按钮: Button
窗口: Frame
文本框: TextField
文本区域: TextArea
2.点击转到: 需要进行按钮组件活动监听
3.监听到之后需要返回文本框TextField中输入的目录字符
使用到组件中的getText()方法
4.将获取到的目录名添加到File 对象中,
转换成字符串数组进行遍历
import java.awt.*;------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
import java.awt.event.*;
import java.io.*;
class TextDemo1
{ //所以要的组件
private Frame f;
private Button but;
private TextField tf;
private TextArea ta;
//构造函数
TextDemo1()
{
init();
}
//制作图形化界面
public void init()
{
//创建新的窗口对象
f = new Frame("File");
//初始化界面
f.setBounds(500,500,600,500);
//添加布局管理
f.setLayout(new FlowLayout());
//创建组件对象并添加组件
tf = new TextField(70);
but =new Button("转到");
ta = new TextArea(25,80);
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
//显示窗口
f.setVisible(true);
}
private void myEvent()
{ //添加活动监听器
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//返回tf的字符串
String dirPath= tf.getText();
//创建File对象 指定定构造其中的文件
File dir = new File(dirPath);
//判断dir制定文件是不是存在&&是否是一个目录
if(dir.exists() && dir.isDirectory())
{ ta.setText("");
String[] names = dir.list();
for(String name : names)
{
ta.append(name+"\r\n");
}
}
/* //给ta设置显示字符串
ta.setText(text);
//清空tf*/
//tf.setText("");
//System.out.println(text);
}
});
//添加窗口监听器
f.addWindowListener(new WindowAdapter()
{ //关闭创窗口事件
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//添加键盘监听器
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{ //当在tf中按下enter时运行方法
int code = e.getKeyCode();
if (code==e.VK_ENTER)
{
String dirPath1 = tf.getText();
File dir1 = new File(dirPath1);
if(dir1.exists() && dir1.isDirectory())
{ ta.setText("");
String[] fl = dir1.list();
for (String name1 :fl )
{
ta.append(name1+"\r\n");
}
}
}
}
});
}
public static void main(String[] args)
{
new TextDemo1();
}
}
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------