Java - GUI

图形用户界面

[java]  view plain  copy
  1. GUI(Graphical User Interface),图形用户界面  
  2.     根据作用分为基本组件(按钮等)和容器(窗口等)  
  3.     所有容器都是java.awt.Container的子类  
  4. AWT(Abstract Window Toolkit),抽象窗口工具集,第一代的Java GUI组件,  
  5.     重量级的(绘制图形时基于底层操作系统完成的,每种操作系统界面是不一样的)  
  6. Swing,不依赖底层细节,轻量级的组件  
  7. Container两个主要类型是Window和Panel  
  8. java.awt.Window  
  9.     有两种形式Frame(框架)和Dialog(对话框)  
  10.     BorderLayout默认布局  
  11. java.awt.Panel  
  12.     Panel必须放在Window或者Window的子类中,一遍显示出来  
  13.     FlowLayout默认布局  
  14. 布局管理器  
  15.     BorderLayout    边界布局,五个区域,东南西北中  
  16.     FlowLayout      流式布局  
  17.     GridLayout      网格布局  
  18.     CardLayout  
  19.     GridBagLayout  
  20.     每个Container都有一个默认布局  
  21.       
  22. 事件概念  
  23.     事件:描述了反生了什么的对象  
  24.     事件源:事件的产生器  
  25.     事件处理器:接受事件,解释事件并处理用户交互的方法  
  26. AWT事件模型  
  27.     JDK1.0的事件模型:层次模型(已经废弃)  
  28.     JDK1.1的时间模型:委托模型  
  29. Java中的组件若想添加事件处理器,都会使用如addXxxListener的方法添加  
  30. 许多事件位于java.awt.event包中,也有一些事件在API的其他地方  
  31. 几类具有典型意义的事件  
  32.     MouseEvent  鼠标事件    鼠标按下,释放,点击等  
  33.     WindowEvent 窗口事件    点击关闭/最小化窗口,得到/失去焦点等  
  34.     ActionEvent 动作事件      
  35. 事件Adapters(适配器)  
  36.     定义的Listener继承Adapter类,那么我们只重写需要的方法,简化了编程  
  37.   
  38. Swing分类:顶层容器,中间容器,原子组件  
  39.     Java提供了三个顶层容器:JFrame,JDialog,JApplet  
  40.     JFrame是一个带有标题和可变大小边框的窗口,任何一个图形界面程序必须至少有一个JFrame  

布局管理器之BorderLayout

[java]  view plain  copy
  1. import java.awt.BorderLayout;  
  2. import java.awt.Dimension;  
  3. import java.awt.Point;  
  4.   
  5. import javax.swing.JButton;  
  6. import javax.swing.JFrame;  
  7.   
  8. public class GUIFrame {  
  9.     JFrame jf;  
  10.     JButton jb1, jb2, jb3, jb4, jb5;  
  11.   
  12.     public void go() {  
  13.         jf = new JFrame("BorderLayout");  
  14.           
  15.         jb1 = new JButton("东");  
  16.         jb2 = new JButton("南");  
  17.         jb3 = new JButton("西");  
  18.         jb4 = new JButton("北");  
  19.         jb5 = new JButton("中");  
  20.           
  21.         jf.setLayout(new BorderLayout(22));// 上边距,下边距  
  22.           
  23.         jf.add(jb1, BorderLayout.EAST);  
  24.         jf.add(jb2, BorderLayout.SOUTH);  
  25.         jf.add(jb3, BorderLayout.WEST);  
  26.         jf.add(jb4, BorderLayout.NORTH);  
  27.         jf.add(jb5, BorderLayout.CENTER);  
  28.           
  29.         jf.setSize(new Dimension(400200));  
  30.         jf.setLocation(new Point(600250));  
  31.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  32.         jf.setVisible(true);  
  33.     }  
  34.   
  35.     public static void main(String[] args) {  
  36.         new GUIFrame().go();  
  37.     }  
  38. }  

布局管理器之FlowLayout

[java]  view plain  copy
  1. import java.awt.Dimension;  
  2. import java.awt.FlowLayout;  
  3. import java.awt.Point;  
  4.   
  5. import javax.swing.JButton;  
  6. import javax.swing.JFrame;  
  7.   
  8. public class GUIFrame {  
  9.     JFrame jf;  
  10.     JButton jb1, jb2, jb3, jb4, jb5;  
  11.   
  12.     public void go() {  
  13.         jf = new JFrame("FlowLayout");  
  14.         //中间对齐方式,上边距,下边距  
  15.         jf.setLayout(new FlowLayout(FlowLayout.CENTER,22));    
  16.           
  17.         jb1 = new JButton("东");  
  18.         jb2 = new JButton("南");  
  19.         jb3 = new JButton("西");  
  20.         jb4 = new JButton("北");  
  21.         jb5 = new JButton("中");  
  22.   
  23.         jf.add(jb1);  
  24.         jf.add(jb2);  
  25.         jf.add(jb3);  
  26.         jf.add(jb4);  
  27.         jf.add(jb5);  
  28.   
  29.         jf.setSize(new Dimension(400200));  
  30.         jf.setLocation(new Point(600250));  
  31.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  32.         jf.setVisible(true);  
  33.     }  
  34.   
  35.     public static void main(String[] args) {  
  36.         new GUIFrame().go();  
  37.     }  
  38. }  

布局管理器之GridLayout

[java]  view plain  copy
  1. import java.awt.Dimension;  
  2. import java.awt.GridLayout;  
  3. import java.awt.Point;  
  4.   
  5. import javax.swing.JButton;  
  6. import javax.swing.JFrame;  
  7.   
  8. public class GUIFrame {  
  9.     JFrame jf;  
  10.     JButton jb1, jb2, jb3, jb4, jb5;  
  11.   
  12.     public void go() {  
  13.         jf = new JFrame("GridLayout");  
  14.         //两行三列,上边距,下边距    
  15.         jf.setLayout(new GridLayout(2,3,5,5));    
  16.           
  17.         jb1 = new JButton("东");  
  18.         jb2 = new JButton("南");  
  19.         jb3 = new JButton("西");  
  20.         jb4 = new JButton("北");  
  21.         jb5 = new JButton("中");  
  22.   
  23.         jf.add(jb1);  
  24.         jf.add(jb2);  
  25.         jf.add(jb3);  
  26.         jf.add(jb4);  
  27.         jf.add(jb5);  
  28.   
  29.         jf.setSize(new Dimension(400200));  
  30.         jf.setLocation(new Point(600250));  
  31.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  32.         jf.setVisible(true);  
  33.     }  
  34.   
  35.     public static void main(String[] args) {  
  36.         new GUIFrame().go();  
  37.     }  
  38. }  

事件的案例

[java]  view plain  copy
  1. package com.itlwc;  
  2. import java.awt.BorderLayout;  
  3. import java.awt.Dimension;  
  4. import java.awt.Point;  
  5. import java.awt.event.MouseEvent;  
  6. import java.awt.event.MouseListener;  
  7.   
  8. import javax.swing.JButton;  
  9. import javax.swing.JComboBox;  
  10. import javax.swing.JFrame;  
  11. import javax.swing.JPanel;  
  12. import javax.swing.JScrollPane;  
  13. import javax.swing.JTextArea;  
  14. import javax.swing.JTextField;  
  15.   
  16. public class MySwing {  
  17.     JFrame jf;  
  18.     JPanel jp;  
  19.     JTextArea jta;  
  20.     JComboBox jcb;  
  21.     JTextField jtf;  
  22.     JButton jb;  
  23.     JScrollPane jsp;  
  24.     StringBuffer sb = new StringBuffer();  
  25.     public void go() {  
  26.         jf = new JFrame();  
  27.         jp = new JPanel();  
  28.   
  29.         String[] str = new String[] { "李文超""牛小俊" };  
  30.         jcb = new JComboBox(str);  
  31.         jtf = new JTextField(10);  
  32.         jb = new JButton("send");  
  33.         jb.addMouseListener(new MouseListener(){  
  34.             public void mouseClicked(MouseEvent e) {  
  35.                 Object name = jcb.getSelectedItem();  
  36.                 String content = jtf.getText();  
  37.                 String nc = name+":"+content+"\n";  
  38.                 sb.append(nc);  
  39.                 jta.setText(sb.toString());  
  40.                 jtf.setText("");  
  41.             }  
  42.             public void mouseEntered(MouseEvent e) {  
  43.                   
  44.             }  
  45.   
  46.             public void mouseExited(MouseEvent e) {  
  47.                   
  48.             }  
  49.   
  50.             public void mousePressed(MouseEvent e) {  
  51.                   
  52.             }  
  53.   
  54.             public void mouseReleased(MouseEvent e) {  
  55.                   
  56.             }  
  57.               
  58.         });  
  59.           
  60.         jp.add(jcb);  
  61.         jp.add(jtf);  
  62.         jp.add(jb);  
  63.         jf.add(jp, BorderLayout.SOUTH);  
  64.   
  65.         jta = new JTextArea();  
  66.         jsp = new JScrollPane(jta);// 把textarea当参数输入滚动条  
  67.         jf.add(jsp);// 增加滚动条就行了  
  68.   
  69.         jf.setSize(new Dimension(300200));  
  70.         jf.setLocation(new Point(600250));  
  71.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  72.         jf.setVisible(true);  
  73.     }  
  74.   
  75.     public static void main(String[] args) {  
  76.         new MySwing().go();  
  77.     }  
  78. }  
效果图

登陆的案例

[java]  view plain  copy
  1. package com.itlwc;  
  2.   
  3. import java.awt.Dimension;  
  4. import java.awt.GridLayout;  
  5. import java.awt.Point;  
  6. import java.awt.event.ActionEvent;  
  7. import java.awt.event.ActionListener;  
  8.   
  9. import javax.swing.JButton;  
  10. import javax.swing.JFrame;  
  11. import javax.swing.JLabel;  
  12. import javax.swing.JPanel;  
  13. import javax.swing.JPasswordField;  
  14. import javax.swing.JTextField;  
  15.   
  16. public class MySwing {  
  17.     private JFrame jf;  
  18.     private JPanel jp1, jp2, jp3;  
  19.     private JButton jb1, jb2;  
  20.     private JLabel jl1, jl2;  
  21.     private JTextField jtf1;  
  22.     private JPasswordField jpf1;  
  23.   
  24.     public static void main(String[] args) {  
  25.         new MySwing().go();  
  26.     }  
  27.     public void go() {  
  28.         jf = new JFrame();  
  29.         jf.setTitle("登陆");  
  30.         jf.setSize(new Dimension(300150));  
  31.         jf.setLocation(new Point(100100));  
  32.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  33.         jf.setResizable(false);  
  34.         jf.setLayout(new GridLayout(32));  
  35.           
  36.         jl1 = new JLabel("用户名:");  
  37.         jtf1 = new JTextField(20);  
  38.         jp1 = new JPanel();  
  39.         jp1.add(jl1);  
  40.         jp1.add(jtf1);  
  41.         jf.add(jp1);  
  42.   
  43.         jl2 = new JLabel("密    码:");  
  44.         jpf1 = new JPasswordField(20);  
  45.         jp2 = new JPanel();  
  46.         jp2.add(jl2);  
  47.         jp2.add(jpf1);  
  48.         jf.add(jp2);  
  49.   
  50.         jb1 = new JButton("登陆");  
  51.         jb1.addActionListener(new MyButtonListener());  
  52.         jb2 = new JButton("取消");  
  53.         jb2.addActionListener(new MyButtonListener());  
  54.         jp3 = new JPanel();  
  55.         jp3.add(jb1);  
  56.         jp3.add(jb2);  
  57.         jf.add(jp3);  
  58.   
  59.         jf.setVisible(true);  
  60.     }  
  61.     private class MyButtonListener implements ActionListener {  
  62.         public void actionPerformed(ActionEvent e) {  
  63.             if (e.getSource() == jb1) {  
  64.                 System.out.println("用户名:" + jtf1.getText());  
  65.                 char[] c = jpf1.getPassword();  
  66.                 System.out.println("密  码:" + new String(c));  
  67.             }  
  68.             if (e.getSource() == jb2) {  
  69.                 jtf1.setText("");  
  70.                 jpf1.setText("");  
  71.             }  
  72.         }  
  73.     }  
  74. }  

效果图


菜单的案例

[java]  view plain  copy
  1. package com.itlwc;  
  2.   
  3. import java.awt.BorderLayout;  
  4. import java.awt.Dimension;  
  5. import java.awt.Point;  
  6.   
  7. import javax.swing.JFrame;  
  8. import javax.swing.JMenu;  
  9. import javax.swing.JMenuBar;  
  10. import javax.swing.JMenuItem;  
  11.   
  12. public class MySwing {  
  13.     private static final long serialVersionUID = 1L;  
  14.     private JFrame jf;  
  15.     private JMenuBar jmb1;  
  16.     private JMenu jm1, jm2, jm3;  
  17.     private JMenuItem jmi1, jmi2, jmi3, jmi4;  
  18.   
  19.     public static void main(String[] args) {  
  20.         new MySwing().go();  
  21.     }  
  22.   
  23.     public void go() {  
  24.         jf = new JFrame();  
  25.         jf.setTitle("菜单");  
  26.         jf.setSize(new Dimension(400200));  
  27.         jf.setLocation(new Point(600250));  
  28.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  29.         jf.setResizable(false);  
  30.         jmb1 = new JMenuBar();  
  31.         jm1 = new JMenu("文件");  
  32.         jm2 = new JMenu("帮助");  
  33.         jmb1.add(jm1);  
  34.         jmb1.add(jm2);  
  35.   
  36.         jmi1 = new JMenuItem("打开");  
  37.         jmi2 = new JMenuItem("另存为");  
  38.         jm1.add(jmi1);  
  39.         jm1.add(jmi2);  
  40.         jmi3 = new JMenuItem("保存到桌面");  
  41.         jmi4 = new JMenuItem("保存到网路");  
  42.         jm3 = new JMenu("保存");  
  43.         jm3.add(jmi3);  
  44.         jm3.add(jmi4);  
  45.   
  46.         jm1.add(jm3);  
  47.         jf.add(jmb1, BorderLayout.NORTH);  
  48.         jf.setVisible(true);  
  49.     }  
  50. }  

效果图


绘图(键盘控制小球移动)

[java]  view plain  copy
  1. package com.itlwc;  
  2.   
  3. import java.awt.Color;  
  4. import java.awt.Dimension;  
  5. import java.awt.Graphics;  
  6. import java.awt.Point;  
  7. import java.awt.event.KeyAdapter;  
  8. import java.awt.event.KeyEvent;  
  9.   
  10. import javax.swing.JFrame;  
  11. import javax.swing.JPanel;  
  12.   
  13. public class MySwing {  
  14.     private JFrame jf;  
  15.     private MyPanel mp;  
  16.     public static void main(String[] args) {  
  17.         new MySwing().go();  
  18.     }  
  19.   
  20.     public void go() {  
  21.         jf = new JFrame();  
  22.         jf.setTitle("绘图");  
  23.         jf.setSize(new Dimension(200200));  
  24.         jf.setLocation(new Point(100100));  
  25.         jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  26.         mp = new MyPanel();  
  27.         jf.add(mp);  
  28.         jf.addKeyListener(new MyKeyEvent());  
  29.         jf.setVisible(true);  
  30.     }  
  31.   
  32.     // 画个小球  
  33.     private class MyPanel extends JPanel {  
  34.         private int x = 5;  
  35.         private int y = 5;  
  36.         private static final long serialVersionUID = 1L;  
  37.   
  38.         // 重写父类绘制容器方法  
  39.         @Override  
  40.         public void paint(Graphics g) {  
  41.             super.paint(g);  
  42.             g.setColor(Color.GREEN);// 设置画笔颜色  
  43.             // 填充一个圆形 x,y坐标,高度,宽度  
  44.             g.fillOval(x, y, 5050);  
  45.         }  
  46.     }  
  47.   
  48.     // 控制小球的移动  
  49.     private class MyKeyEvent extends KeyAdapter {  
  50.         @Override  
  51.         public void keyPressed(KeyEvent e) {  
  52.             super.keyPressed(e);  
  53.             if (e.getKeyCode() == KeyEvent.VK_UP) {  
  54.                 mp.y--;  
  55.             }  
  56.             if (e.getKeyCode() == KeyEvent.VK_DOWN) {  
  57.                 mp.y++;  
  58.             }  
  59.             if (e.getKeyCode() == KeyEvent.VK_LEFT) {  
  60.                 mp.x--;  
  61.             }  
  62.             if (e.getKeyCode() == KeyEvent.VK_RIGHT) {  
  63.                 mp.x++;  
  64.             }  
  65.             // 让面板刷新  
  66.             mp.repaint();  
  67.         }  
  68.     }  
  69. }  
效果图



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值