------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------GUI
GUI
(1)用户图形界面
GUI:方便直观
CLI:需要记忆一下命令,麻烦
(2)两个包:
java.awt:和系统关联较强
javax.swing:纯Java编写
(3)GUI的继承体系
组件:组件就是对象
容器组件:是可以存储基本组件和容器组件的组件。
基本组件:是可以使用的组件,但是必须依赖容器。
(4)事件监听机制
A:事件源 : 事件发生的地方
B:事件: 就是要发生的事情
C:事件处理:就是针对发生的事情做出的处理方案
D:事件监听:就是把事件源和事件关联起来
事件监听机制流程:
(5)适配器模式
A:接口
B:抽象适配器类
C:实现类
(6)案例:
A:创建窗体案例
<span style="font-size:18px;">public class FrameDemo {
public static void main(String[] args) {
// 创建窗体对象
Frame f = new Frame("窗体");
// 设置窗体标题
f.setTitle("HelloWorld");
// 设置窗体大小
f.setSize(400, 300); // 单位:像素
// 设置窗体位置
f.setLocation(400, 200);
// 调用一个方法,设置让窗体可见
f.setVisible(true);
}
}</span>
B:窗体关闭案例
<span style="font-size:18px;">public class FrameDemo {
public static void main(String[] args) {
// 创建窗体对象
Frame f = new Frame("窗体关闭");
// 设置窗体属性
f.setBounds(400, 200, 400, 300);
// 让窗体关闭
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 设置窗体可见
f.setVisible(true);
}
}</span>
C:把文本框里面的数据转移到文本域
<span style="font-size:18px;">public class FrameDemo {
public static void main(String[] args) {
// 创建窗体对象
Frame f = new Frame("数据转移");
// 设置窗体属性和布局
f.setBounds(400, 200, 400, 300);
f.setLayout(new FlowLayout());
// 创建文本框
final TextField tf = new TextField(20);
// 创建按钮
Button bu = new Button("数据转移");
// 创建文本域
final TextArea ta = new TextArea(10, 40);
// 把组件添加到窗体
f.add(tf);
f.add(bu);
f.add(ta);
// 设置窗体关闭
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 对按钮添加事件
bu.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 获取文本框的值
String tf_str = tf.getText().trim();
// 清空数据
tf.setText("");
// 设置给文本域
// ta.setText(tf_str);
// 追加和换行
ta.append(tf_str + "\r\n");
//获取光标
tf.requestFocus();
}
});
// 设置窗体显示
f.setVisible(true);
}
}</span>
D:多级菜单
<span style="font-size:18px;">public class FrameDemo {
public static void main(String[] args) {
// 创建窗体对象并设置属性
final Frame f = new Frame("多级菜单");
f.setBounds(400, 200, 400, 300);
f.setLayout(new FlowLayout());
final String name = f.getTitle();
// 创建菜单栏
MenuBar mb = new MenuBar();
// 创建菜单
Menu m1 = new Menu("文件");
Menu m2 = new Menu("更改名称");
// 创建菜单项
final MenuItem mi1 = new MenuItem("好好学习");
final MenuItem mi2 = new MenuItem("天天向上");
MenuItem mi3 = new MenuItem("恢复标题");
MenuItem mi4 = new MenuItem("打开记事本");
MenuItem mi5 = new MenuItem("退出系统");
m2.add(mi1);
m2.add(mi2);
m2.add(mi3);
m1.add(m2);
m1.add(mi4);
m1.add(mi5);
mb.add(m1);
// 设置菜单栏
f.setMenuBar(mb);
// 设置窗体关闭
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
mi1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
f.setTitle(mi1.getLabel());
}
});
mi2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
f.setTitle(mi2.getLabel());
}
});
mi3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
f.setTitle(name);
}
});
mi4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Runtime r = Runtime.getRuntime();
try {
r.exec("notepad");
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
mi5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
// 设置窗体可见
f.setVisible(true);
}
}</span>