关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例。
程序是为了方便用户使用的,Java引入图形化界面编程。
1.JFrame 是容器类
2.AWT 是抽象窗口组件工具包,是 Java 最早的用于编写图形节目应用程序的开发包。
3.Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。
代码实例1:
1package com.zhouzhou; 2//练习网格布局 3import java.awt.*; 4import javax.swing.*; 5 6public class Demo9 extends JFrame { 7 // 定义组件 8 int size = 9; 9 JButton jbs[] = new JButton[size]; 10 11 public static void main(String[] args) { 12 // 创建实例 13 Demo9 de = new Demo9(); 14 } 15 16 // 构造函数 17 public Demo9() { 18 19 // 创建组件 20 for (int i = 0; i < size; i++) { 21 jbs[i] = new JButton(String.valueOf(i)); 22 } 23 // 设置网格布局,这里只有前两个参数(行/列)3和3 的话,网格没有空隙 24 this.setLayout(new GridLayout(3, 3, 10, 10)); 25 26 // 添加组件 27 for (int i = 0; i < size; i++) { 28 this.add(jbs[i]); 29 } 30 // 设置窗体属性 31 this.setTitle("网格布局案例"); 32 this.setSize(300, 400); 33 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 34 this.setLocation(200, 200); 35 36 // 显示 37 this.setVisible(true); 38 } 39}

代码实例2:
1package com.zhouzhou; 2 3import java.awt.*; 4import javax.swing.*; 5 6public class Demo10 extends JFrame { 7 // 定义组件 8 JPanel jp1, jp2; 9 JButton jb1, jb2, jb3, jb4, jb5, jb6; 10 11 public static void main(String[] args) { 12 // TODO Auto-generated method stub 13 Demo10 de = new Demo10(); 14 } 15 16 // 构造函数 17 public Demo10() { 18 // 创建组件 19 20 jp1 = new JPanel(); 21 jp2 = new JPanel(); 22 23 jb1 = new JButton("西瓜"); 24 jb2 = new JButton("苹果"); 25 jb3 = new JButton("荔枝"); 26 jb4 = new JButton("葡萄"); 27 jb5 = new JButton("桔子"); 28 jb6 = new JButton("香蕉"); 29 30 // 设置布局管理器, //JPanel布局默认是BorderLoyout// 添加JPanel 31 //JPanel属于容器类组件,可以加入别的组件 32 jp1.add(jb1); 33 jp1.add(jb2); 34 35 jp2.add(jb3); 36 jp2.add(jb4); 37 jp2.add(jb5); 38 39 // 把jpanel 加入JFrame 40 this.add(jp1, BorderLayout.NORTH); 41 this.add(jb6, BorderLayout.CENTER); 42 this.add(jp2, BorderLayout.SOUTH); 43 44 this.setSize(300, 400); 45 this.setLocation(200, 200); 46 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 47 this.setVisible(true); 48 } 49}

代码实例3:
1package com.zhouzhou; 2 3import java.awt.*; 4 5import javax.swing.*; 6 7public class Demo11 extends JFrame { 8 9 // 定义组件 10 JPanel jp1, jp2, jp3; 11 JLabel jlb1, jlb2; 12 JButton jb1, jb2; 13 JTextField jtf1; 14 JPasswordField jpf1; 15 16 public static void main(String[] args) { 17 // TODO Auto-generated method stub 18 Demo11 d1 = new Demo11(); 19 20 } 21 22 // 构造函数 23 public Demo11() { 24 25 jp1 = new JPanel(); 26 jp2 = new JPanel(); 27 jp3 = new JPanel(); 28 29 jlb1 = new JLabel("用户名"); 30 jlb2 = new JLabel("密 码"); 31 32 jb1 = new JButton("登录"); 33 jb2 = new JButton("取消"); 34 35 jtf1 = new JTextField(10); 36 37 jpf1 = new JPasswordField(10);// 设置布局管理(上面忘记:extends JFrame,这里出错了) 38 this.setLayout(new GridLayout(3, 1)); 39 40 // 加入各个组件 41 jp1.add(jlb1); 42 jp1.add(jtf1); 43 44 jp2.add(jlb2); 45 jp2.add(jpf1); 46 47 jp3.add(jb1); 48 jp3.add(jb2); 49 50 // 加入到JFrame 51 this.add(jp1); 52 this.add(jp2); 53 this.add(jp3); 54 55 this.setSize(250, 150); 56 this.setTitle("登录"); 57 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 58 this.setVisible(true); 59 } 60}

代码实例4:
1package com.zhouzhou; 2 3import java.awt.*; 4 5import javax.swing.*; 6 7public class Demo12 extends JFrame { 8 9 // 定义组件 10 JPanel jp1, jp2, jp3; 11 JLabel jlb1, jlb2; 12 JCheckBox jcb1, jcb2, jcb3; 13 JRadioButton jrb1, jrb2; 14 JButton jb1, jb2; 15 // 单选设置 16 ButtonGroup bg, bg2; 17 18 public static void main(String[] args) { 19 // TODO Auto-generated method stub 20 Demo12 d2 = new Demo12(); 21 22 } 23 24 // 构造函数 25 public Demo12() { 26 jp1 = new JPanel(); 27 jp2 = new JPanel(); 28 jp3 = new JPanel(); 29 30 jlb1 = new JLabel("你喜欢的运动"); 31 jlb2 = new JLabel("你的性别"); 32 33 jcb1 = new JCheckBox("足球"); 34 jcb2 = new JCheckBox("篮球"); 35 jcb3 = new JCheckBox("网球"); 36 // 下面可以设置单选 37 // ButtonGroup bg2=new ButtonGroup(); 38 // bg2.add(jcb1); 39 // bg2.add(jcb2); 40 // bg2.add(jcb2); 41 42 jrb1 = new JRadioButton("男"); 43 jrb2 = new JRadioButton("女"); 44 // 一定要把jrb1,jrb2放入到一个ButtonGroup里面 45 ButtonGroup bg = new ButtonGroup(); 46 bg.add(jrb1); 47 bg.add(jrb2); 48 49 jb1 = new JButton("注册用户"); 50 jb2 = new JButton("取消用户"); 51 52 this.setLayout(new GridLayout(3, 1)); 53 54 jp1.add(jlb1); 55 jp1.add(jcb1); 56 jp1.add(jcb2); 57 jp1.add(jcb3); 58 59 jp2.add(jlb2); 60 jp2.add(jrb1); 61 jp2.add(jrb2); 62 63 jp3.add(jb1); 64 jp3.add(jb2); 65 66 // 加入到JFrame 67 this.add(jp1); 68 this.add(jp2); 69 this.add(jp3); 70 71 this.setSize(300, 200); 72 this.setTitle("用户注册界面"); 73 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 74 this.setVisible(true); 75 76 } 77}

代码实例5:
1package com.zhouzhou; 2 3import java.awt.*; 4 5import javax.swing.*; 6 7public class Demo13 extends JFrame { 8 // 定义组件 9 JPanel jp1, jp2; 10 JLabel jlb1, jlb2; 11 JComboBox jcb1; 12 JList jl1; 13 JScrollPane jsp; 14 15 public static void main(String[] args) { 16 // TODO Auto-generated method stub 17 Demo13 d3 = new Demo13(); 18 } 19 20 public Demo13() { 21 22 jp1 = new JPanel(); 23 jp2 = new JPanel(); 24 25 jlb1 = new JLabel("您的籍贯是"); 26 jlb2 = new JLabel("您喜欢旅游的地区"); 27 28 String[] jg = { "北京", "上海", "天津", "重庆", "江苏" }; 29 jcb1 = new JComboBox(jg); 30 31 String[] jg2 = { "故宫", "长城", "九寨沟", "天安门", "火星" }; 32 jl1 = new JList(jg2); 33 // 设置你希望显示多少个选项 34 jl1.setVisibleRowCount(1); 35 jsp = new JScrollPane(jl1); 36 37 // 布局管理 38 this.setLayout(new GridLayout(3, 1)); 39 40 // 添加组件 41 jp1.add(jlb1); 42 jp1.add(jcb1); 43 44 jp2.add(jlb2); 45 jp2.add(jsp); 46 47 this.add(jp1); 48 this.add(jp2); 49 50 this.setSize(300, 400); 51 this.setTitle("下拉框练习"); 52 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 53 this.setVisible(true); 54 55 } 56 57}

代码实例6:
1package com.zhouzhou; 2 3import java.awt.*; 4import javax.swing.*; 5 6public class Demo14 extends JFrame { 7 8 // 定义组件 9 JSplitPane jsp; 10 JList jList; 11 JLabel jl1; 12 13 public static void main(String[] args) { 14 // TODO Auto-generated method stub 15 Demo14 d4 = new Demo14(); 16 17 } 18 19 public Demo14() { 20 21 // 创建组件 22 String[] words = { "boy", "gril", "bird", "box" }; 23 jList = new JList(words); 24 25 // JLabel可以放置图片 26 jl1 = new JLabel(new ImageIcon("images/1.jpeg")); 27 28 // 拆分窗格 29 jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jList, jl1); 30 // 可以手动伸缩变化 31 jsp.setOneTouchExpandable(true); 32 33 // 设置布局管理器,它本身就是borderLayout布局,就不用再设置了 34 35 // 添加组件 36 this.add(jsp); 37 38 this.setSize(400, 300); 39 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 40 this.setVisible(true); 41 42 } 43}

代码实例7:
1package com.zhouzhou; 2 3import java.awt.*; 4 5import javax.swing.*; 6 7public class Demo15 extends JFrame { 8 9 // 定义组件 10 JTextArea jta = null;// 多行文本框 11 JScrollPane jsp = null; 12 JPanel jp1 = null;// 面板 13 JComboBox jcb = null;// 下拉框组件 14 JTextField jtf = null;// 文本框 15 JButton jb = null; 16 17 public static void main(String[] args) { 18 // TODO Auto-generated method stub 19 Demo15 d5 = new Demo15(); 20 21 } 22 23 // 构造函数 24 public Demo15() { 25 // 多行文本框会根据情况自己调节大小 26 jta = new JTextArea(); 27 jsp = new JScrollPane(jta); 28 jp1 = new JPanel(); 29 String j2[] = { "北京", "商行", "农行", "师大", "附中", "哈尔滨" }; 30 jcb = new JComboBox(j2); 31 // 文本框最好设置初值 32 jtf = new JTextField(10); 33 jb = new JButton("发送"); 34 // 布局管理 35 // this.setLayout(new GridLayout(1, 1)); 36 // 添加 37 jp1.add(jcb); 38 jp1.add(jtf); 39 jp1.add(jb); 40 // 多行文本框是放在这里(JFrame)的!!! 41 // 因为上面又添加可以滚动的功能,这里传入jsp,而不是jta 42 this.add(jsp); 43 // 下面这里就需要定位处理 44 this.add(jp1, BorderLayout.SOUTH); 45 46 // 设置窗体属性,z这里很厉害!! 47 this.setIconImage((new ImageIcon("images\\3.jpg")).getImage()); 48 49 this.setSize(300, 200); 50 this.setTitle("QQ登录"); 51 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 52 this.setVisible(true); 53 54 } 55}

代码实例8:
1package com.zhouzhou; 2 3//QQ登录界面制作 4import java.awt.*; 5import javax.swing.*; 6 7public class Demo16 extends JFrame { 8 9 // 北部区域 10 JLabel jl1; 11 12 // 南部区域 13 JButton jb1, jb2, jb3; 14 JPanel jp1; 15 16 // 中部区域 17 JTabbedPane jtp;// 选项卡窗格 18 JPanel jp2, jp3, jp4; 19 20 JLabel jl2, jl3, jl4, jl5; 21 // 号码输入文本框 22 JTextField jtf; 23 // 密码 24 JPasswordField jpf; 25 // 清除号码 26 JButton jb4; 27 // 隐身登录、记住密码 28 JCheckBox jcb1, jcb2; 29 30 public static void main(String[] args) { 31 // TODO Auto-generated method stub 32 new Demo16(); 33 34 } 35 36 public Demo16() { 37 38 // 创建组件 39 jl2 = new JLabel("QQ号码", JLabel.CENTER); 40 jl3 = new JLabel("QQ密码", JLabel.CENTER); 41 jl4 = new JLabel("忘记密码", JLabel.CENTER); 42 jl4.setFont(new Font("宋体", Font.PLAIN, 16));// 设置字体样式 43 jl4.setForeground(Color.BLUE);// 设置字体颜色 44 jl5 = new JLabel("<html><a href='www.qq.com'>申请密码保护</a></html>"); 45 // 鼠标触发变化 46 jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); 47 48 jtf = new JTextField(); 49 jpf = new JPasswordField(); 50 jb4 = new JButton(new ImageIcon("images\\login.png")); 51 52 jcb1 = new JCheckBox("隐身登录"); 53 jcb2 = new JCheckBox("记住密码"); 54 55 // 北部区域 56 jl1 = new JLabel(new ImageIcon("images\\headpicture.jpg")); 57 58 // 南部区域 59 jp1 = new JPanel(); 60 jb1 = new JButton(new ImageIcon("images\\login.png")); 61 jb2 = new JButton(new ImageIcon("images\\delete.png")); 62 jb3 = new JButton(new ImageIcon("images\\register.png")); 63 64 // 中部区域 65 jtp = new JTabbedPane(); 66 jp2 = new JPanel(); 67 jp3 = new JPanel(); 68 jp3.setBackground(Color.RED);// 给面板设置背景 69 jp4 = new JPanel(); 70 jp4.setBackground(new Color(0, 0, 255)); 71 72 // 将面板添加到选项卡窗格上 73 jtp.add("QQ号码", jp2);// 参数:选项卡名称,面板 74 jtp.add("手机号码", jp3); 75 jtp.add("电子邮箱", jp4); 76 77 // 设置布局 78 jp2.setLayout(new GridLayout(3, 3)); 79 80 // 添加组件 81 jp1.add(jb1); 82 jp1.add(jb2); 83 jp1.add(jb3); 84 85 jp2.add(jl2); 86 jp2.add(jtf); 87 jp2.add(jb4); 88 jp2.add(jl3); 89 jp2.add(jpf); 90 jp2.add(jl4); 91 jp2.add(jcb1); 92 jp2.add(jcb2); 93 jp2.add(jl5); 94 95 this.add(jp1, BorderLayout.SOUTH); 96 this.add(jl1, BorderLayout.NORTH); 97 this.add(jtp, BorderLayout.CENTER); 98 99 // 展示组件 100 ImageIcon icon = new ImageIcon("images\\qq.png"); 101 this.setIconImage(icon.getImage());// 给窗体设置图标方法 102 this.setSize(400, 380); 103 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 104 this.setVisible(true); 105 106 } 107}

代码实例9:
1package com.zhouzhou; 2 3//记事本界面 4import java.awt.*; 5import javax.swing.*; 6 7import java.awt.event.*; 8 9public class Demo17 extends JFrame { 10 11 // 工具条 12 JToolBar jtb; 13 JButton jb1, jb2, jb3, jb4, jb5, jb6; 14 15 // 菜单条组件 16 JMenuBar jmb; 17 JMenu menu1, menu2, menu3, menu4, menu5; 18 JMenuItem item2, item3, item4, item5, item6, item7; 19 JMenu xinjian;// 二级菜单 20 JMenuItem file, project; 21 22 JTextArea jta; 23 24 public static void main(String[] args) { 25 // TODO Auto-generated method stub 26 new Demo17(); 27 28 } 29 30 public Demo17() { 31 32 // 创建工具条 33 jtb = new JToolBar(); 34 jb1 = new JButton(new ImageIcon("images\\11.png")); 35 jb1.setToolTipText("新建"); 36 jb2 = new JButton(new ImageIcon("images\\22.png")); 37 jb2.setToolTipText("打开"); 38 jb3 = new JButton(new ImageIcon("images\\33.png")); 39 jb3.setToolTipText("等待"); 40 jb4 = new JButton(new ImageIcon("images\\44.png")); 41 jb4.setToolTipText("统计"); 42 jb5 = new JButton(new ImageIcon("images\\55.png")); 43 jb5.setToolTipText("参与"); 44 jb6 = new JButton(new ImageIcon("images\\66.png")); 45 jb6.setToolTipText("旁观"); 46 47 jmb = new JMenuBar(); 48 49 menu1 = new JMenu("文件(F)"); 50 menu1.setMnemonic('F');// 设置助记符 51 menu2 = new JMenu("编辑(E)"); 52 menu2.setMnemonic('E'); 53 menu3 = new JMenu("格式(O)"); 54 menu3.setMnemonic('O'); 55 menu4 = new JMenu("查看(V)"); 56 menu4.setMnemonic('V'); 57 menu5 = new JMenu("帮助(H)"); 58 menu5.setMnemonic('H'); 59 60 // item1=new JMenuItem(“新建”) 61 xinjian = new JMenu("新建"); 62 file = new JMenuItem("文件"); 63 project = new JMenuItem("工程"); 64 65 item2 = new JMenuItem("打开", new ImageIcon("images\\77.png")); 66 item3 = new JMenuItem("保存(S)"); 67 item3.setMnemonic('S'); 68 // 给菜单选项添加快捷方式 69 item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, 70 InputEvent.ALT_MASK)); 71 item4 = new JMenuItem("另存为"); 72 item5 = new JMenuItem("页面设置"); 73 item6 = new JMenuItem("打印"); 74 item7 = new JMenuItem("退出"); 75 76 jta = new JTextArea(); 77 78 // 设置布局 79 80 // 添加组件 81 // 将按钮添加到工具条上 82 jtb.add(jb1); 83 jtb.add(jb2); 84 jtb.add(jb3); 85 jtb.add(jb4); 86 jtb.add(jb5); 87 jtb.add(jb6); 88 89 // 将菜单添加到菜单栏上 90 xinjian.add(file); 91 xinjian.add(project); 92 93 menu1.add(xinjian); 94 menu1.add(item2); 95 menu1.add(item3); 96 menu1.add(item4); 97 menu1.addSeparator();// 添加分割线 98 menu1.add(item5); 99 menu1.add(item6); 100 menu1.addSeparator(); 101 menu1.add(item7); 102 103 // 将菜单添加到菜单条上 104 jmb.add(menu1); 105 jmb.add(menu2); 106 jmb.add(menu3); 107 jmb.add(menu4); 108 jmb.add(menu5); 109 110 // 将菜单添加到窗体上 111 this.setJMenuBar(jmb); 112 113 // 将工具条添加到窗体 114 this.add(jtb, BorderLayout.NORTH); 115 116 JScrollPane jsp = new JScrollPane(jta); 117 jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 118 this.add(jsp); 119 120 // 展示 121 this.setTitle("记事本"); 122 ImageIcon icon = new ImageIcon("images\\jsb.png"); 123 this.setIconImage(icon.getImage()); 124 this.setSize(1200, 900); 125 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 126 this.setVisible(true); 127 128 } 129 130}
