GUI(如何创建一个窗口并显示)
* Graphical User Interface(图形用户接口)。
*
Frame f = new Frame(“my window”);
f.setLayout(new FlowLayout());//设置布局管理器
f.setSize(500,400);//设置窗体大小
f.setLocation(300,200);//设置窗体出现在屏幕的位置
f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png"));
f.setVisible(true);
###GUI(布局管理器)
* FlowLayout(流式布局管理器)
* 从左到右的顺序排列。
* Panel默认的布局管理器。
* BorderLayout(边界布局管理器)
* 东,南,西,北,中
* Frame默认的布局管理器。
* GridLayout(网格布局管理器)
* 规则的矩阵
* CardLayout(卡片布局管理器)
* 选项卡
* GridBagLayout(网格包布局管理器)
* 非规则的矩阵
###GUI(窗体监听)
Frame f = new Frame("我的窗体");
//事件源是窗体,把监听器注册到事件源上
//事件对象传递给监听器
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//退出虚拟机,关闭窗口
System.exit(0);
}
});
###GUI(鼠标监听)
###GUI(键盘监听和键盘事件)
###GUI(动作监听)
###设计模式(适配器设计模式)(掌握)
* a.什么是适配器
* 在使用监听器的时候, 需要定义一个类事件监听器接口.
* 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐.
* 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可.
* b.适配器原理
* 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.
* 适配器类需要定义成抽象的,因为创建该类对象,调用空方法是没有意义的
* 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.
###GUI(需要知道的)
* 事件处理
* 事件: 用户的一个操作
* 事件源: 被操作的组件
* 监听器: 一个自定义类的对象, 实现了监听器接口, 包含事件处理方法,把监听器添加在事件源上, 当事件发生的时候虚拟机就会自动调用监听器中的事件处理方法
public static void main(String[] args) { Frame f = new Frame("我的第一个窗口"); f.setSize(400, 600); //设置窗体大小 f.setLocation(500, 50); //设置窗体位置 f.setIconImage(Toolkit.getDefaultToolkit().createImage("qq.png")); Button b1 = new Button("按钮一"); Button b2 = new Button("按钮二"); f.add(b1); f.add(b2); f.setLayout(new FlowLayout()); //设置布局管理器 //f.addWindowListener(new MyWindowAdapter()); f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); b1.addMouseListener(new MouseAdapter() { /*@Override public void mouseClicked(MouseEvent e) { //单击 System.exit(0); }*/ @Override public void mouseReleased(MouseEvent e) { //释放 System.exit(0); } }); b1.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { //System.exit(0); //System.out.println(e.getKeyCode()); //if(e.getKeyCode() == 32) { if(e.getKeyCode() == KeyEvent.VK_SPACE){ System.exit(0); } } }); b2.addActionListener(new ActionListener() { //添加动作监听,应用场景就是暂停视频和播放视频 @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); f.setVisible(true); //设置窗体可见 } } /*class MyWindowListener implements WindowListener { @Override public void windowOpened(WindowEvent e) { } @Override public void windowClosing(WindowEvent e) { System.exit(0); } @Override public void windowClosed(WindowEvent e) { System.out.println("Closed"); } @Override public void windowIconified(WindowEvent e) { } @Override public void windowDeiconified(WindowEvent e) { } @Override public void windowActivated(WindowEvent e) { } @Override public void windowDeactivated(WindowEvent e) { } } */ /*class MyWindowAdapter extends WindowAdapter { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }*/