java基础 swing编程实战
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础 swing编程实战相关的知识,希望对你有一定的参考价值。
1. 实现金山词霸,点击左右收缩
效果图:
exmaple code :
1 /* 2 * 词霸 3 * */ 4 package demo7; 5 import java.awt.*; 6 import java.awt.image.ImageObserver; 7 import java.awt.image.ImageProducer; 8 9 import javax.swing.*; 10 public class example1 extends JFrame{ 11 12 /** 13 * @param args 14 */ 15 16 //定义组件 17 JSplitPane jsp; 18 JList jlist; 19 JLabel jl1; 20 public static void main(String[] args) { 21 // TODO Auto-generated method stub 22 example1 exam = new example1(); 23 } 24 public example1() 25 { 26 //创建组件 27 String []words = {"boy","girl","bird"}; 28 jlist = new JList(words); 29 30 jl1 = new JLabel(new ImageIcon("image/ciba.jpg")); 31 //拆分窗格 32 jsp =new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jlist,jl1); 33 //可以变化 34 jsp.setOneTouchExpandable(true); 35 //设置布局管理器 36 37 //添加组件 38 this.add(jsp); 39 40 //设置大小 41 this.setSize(400, 300); 42 this.setLocation(200, 200); 43 this.setVisible(true); 44 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 45 } 46 47 }
2 . QQ聊天界面
涉及到新的swing组件:
1. JTextArea 多行文本框组件
example code:
1 /* 2 * QQ聊天 3 * */ 4 package demo7; 5 import java.awt.*; 6 import javax.swing.*; 7 public class example2 extends JFrame{ 8 9 /** 10 * @param args 11 */ 12 JTextArea jta = null; 13 JScrollPane jsp = null; 14 JPanel jp1=null; 15 JComboBox jcb = null; 16 JTextField jtf = null; 17 JButton jb = null; 18 public static void main(String[] args) { 19 // TODO Auto-generated method stub 20 example2 exam = new example2(); 21 } 22 23 //构造函数 24 public example2() 25 { 26 jta = new JTextArea(); 27 jsp = new JScrollPane(jta); 28 jp1 = new JPanel(); 29 String []chatter = {"布什","拉登"}; 30 jcb = new JComboBox(chatter); 31 jtf = new JTextField(10); 32 jb =new JButton("发送"); 33 34 //设置布局管理器 35 36 //添加组件 37 jp1.add(jcb); 38 jp1.add(jtf); 39 jp1.add(jb); 40 41 //加入JFrame 42 this.add(jsp); 43 this.add(jp1,BorderLayout.SOUTH); 44 45 //属性 46 this.setIconImage(new ImageIcon("image/qq.jpg").getImage()); 47 this.setTitle("腾讯QQ"); 48 this.setSize(300,200); 49 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 50 this.setVisible(true); 51 } 52 53 }
3 QQ登陆界面
example code:
1 /** 2 * 页签组件(JTabbedPane)选项卡窗格--使用QQ登录界面 3 */ 4 import java.awt.*; 5 import javax.swing.*; 6 public class example3 extends JFrame{ 7 //设定组件 8 //主页面北部 9 JLabel jl1;//标签 10 11 //主页面南部 12 JButton jb1,jb2,jb3;//按钮 13 JPanel jp1;//面板 14 15 //主页面中部 16 JTabbedPane jtp;//选项卡窗格 17 JPanel jp2,jp3,jp4;//面板 18 19 JLabel jl2,jl3,jl4,jl5;//标签 20 JTextField jtf;//文本框 21 JPasswordField jpf;//密码框 22 JButton jb4;//按钮 23 JCheckBox jcb1,jcb2;//复选框 24 25 //JPanel2组件 26 JLabel jl6,jl7;//标签 27 JTextField jtf1; 28 JPasswordField jpf1; 29 30 //JPanel3组件 31 JLabel jl8,jl9;//标签 32 JTextField jtf2; 33 JPasswordField jpf2; 34 35 36 public static void main(String[] args) { 37 example3 win=new example3(); 38 } 39 //构造函数 40 public example3(){ 41 //创建组件 42 //创建JFrame北部JLabel1组件 43 jl1=new JLabel(new ImageIcon("images/qqdl.jpg")); 44 45 //创建JFrame中部JPanel2组件 46 jl2=new JLabel("QQ号码",JLabel.CENTER); 47 jl3=new JLabel("QQ密码",JLabel.CENTER); 48 jl4=new JLabel("忘记密码",JLabel.CENTER); 49 jl4.setFont(new Font("宋体",Font.PLAIN,16));//设置字体,字号 50 jl4.setForeground(Color.BLUE);//设置字体颜色 51 jl5=new JLabel("<html><a href=‘www.qq.com‘>申请密码保护</a></html>"); 52 jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//鼠标移动到jl5后会变成手指图标 53 54 jtf=new JTextField(); 55 jpf=new JPasswordField(); 56 jb4=new JButton("清除号码");//JButton上可以放图片。new JButton(new ImageIcon("图片路径")); 57 58 jcb1=new JCheckBox("隐身登录"); 59 jcb2=new JCheckBox("记住密码"); 60 61 jtp=new JTabbedPane();//选项卡窗格 62 jp2=new JPanel(); 63 jp3=new JPanel(); 64 //jp3.setBackground(Color.RED);//给面板设置背景色 65 jp4=new JPanel(); 66 //jp4.setBackground(new Color(0,0,255)); 67 68 //创建JFrame中部JTabbedPane选项卡JPanel3组件 69 jl6=new JLabel("手机号码",JLabel.CENTER); 70 jl7=new JLabel("密 码",JLabel.CENTER); 71 jtf1=new JTextField(20); 72 jpf1=new JPasswordField(20); 73 74 //创建JFrame中部JTabbedPane选项卡JPanel4组件 75 jl8=new JLabel("电子邮箱",JLabel.CENTER); 76 jl9=new JLabel("密 码",JLabel.CENTER); 77 jtf2=new JTextField(20); 78 jpf2=new JPasswordField(20); 79 80 //创建JFrame南部JPanel1组件 81 jp1=new JPanel(); 82 jb1=new JButton("登 录"); 83 jb2=new JButton("取 消"); 84 jb3=new JButton("注册向导"); 85 86 //设置布局管理器 87 jp2.setLayout(new GridLayout(3, 3)); 88 //jp3.setLayout(new GridLayout(2, 2)); 89 //jp4.setLayout(new GridLayout(2, 2)); 90 91 92 //加入组件 93 //将组件添加到JPanel2中 94 jp2.add(jl2);//加入QQ号码标签 95 jp2.add(jtf);//加入文本框 96 jp2.add(jb4);//加入清除号码按扭 97 98 jp2.add(jl3);//加入QQ密码标签 99 jp2.add(jpf);//加入密码框 100 jp2.add(jl4);//加入忘记密码 101 102 jp2.add(jcb1);//加入隐身登陆复选框 103 jp2.add(jcb2);//加入记住密码复选框 104 jp2.add(jl5);//加入申请密码保护标签 105 106 //将组件添加到JPanel3中 107 jp3.add(jl6); 108 jp3.add(jtf1); 109 jp3.add(jl7); 110 jp3.add(jpf1); 111 112 //将组件添加到JPanel4中 113 jp4.add(jl8); 114 jp4.add(jtf2); 115 jp4.add(jl9); 116 jp4.add(jpf2); 117 118 //添加到JPanel1中 119 jp1.add(jb1); 120 jp1.add(jb2); 121 jp1.add(jb3); 122 123 //将面板添加到选项卡窗格上 124 jtp.add("QQ号码",jp2);//第一个参数代表选项卡名称,第二个参数代表对应的面板 125 jtp.add("手机号码",jp3); 126 jtp.add("电子邮箱",jp4); 127 128 //将JLabel1添加到Frame北部 129 this.add(jl1,BorderLayout.NORTH); 130 131 //将JPanle2添加到Frame中部 132 this.add(jtp,BorderLayout.CENTER); 133 134 //将JPanel1添加到Frame南部 135 this.add(jp1,BorderLayout.SOUTH); 136 137 138 //窗体设置 139 this.setTitle("QQ登录界面"); 140 //ImageIcon icon=new ImageIcon("图片路径"); 141 //this.setIconImage(icon.getImage()); 142 this.setIconImage((new ImageIcon("image/qqdl.jpg")).getImage()); 143 this.setSize(350, 300); 144 this.setLocationRelativeTo(null); 145 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 146 this.setVisible(true); 147 this.setResizable(false); 148 } 149 }
4. 文本编辑器界面
效果图:
example code:
1 package demo7; 2 3 /** 4 * 1、菜单组件 5 JMenuBar 菜单条组件 树干 6 JMenu 菜单组件 树枝 7 JMenuItem 菜单项组件 树叶 8 2、二级菜单制作 9 JMenu里面可以嵌套JMenu 10 3、工具条组件 11 JToolBar 容器类组件 12 */ 13 import java.awt.*; 14 import java.awt.event.InputEvent; 15 import java.awt.event.InputMethodEvent; 16 import java.awt.event.KeyEvent; 17 import javax.swing.*; 18 public class Window012 extends JFrame{ 19 //文件组定义组件 20 JMenuBar jmb;//菜单条组件 21 JMenu menu1,menu2,menu3,menu4,menu5;//主菜单:文件、编辑、格式、查看、帮助 22 JMenuItem item2,item3,item4,item5,item6,item7;//子菜单:新建、打开、保存、另存为、页面设置、打印、退出 23 JMenu xinjian;//二级菜单 24 JMenuItem file,project; 25 26 //编辑组定义组件 27 //编辑:撤消、剪切、复制、粘贴、删除、查找、查找下一个、替换、转到、全选、时间/日期 28 JMenuItem eitem1,eitem2,eitem3,eitem4,eitem5,eitem6,eitem7,eitem8,eitem9,eitem10,eitem11; 29 30 //格式组定义组件 31 JMenuItem oitem1,oitem2;//格式:自动换行、字体 32 33 //查看组定义组件 34 JMenuItem vitem1;//查看:状态栏 35 36 //帮助组定义组件 37 JMenuItem hitem1,hitem2;//帮助:查看帮助、关于记事本 38 39 JTextArea jta; 40 //工具条 41 JToolBar jtb; 42 JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8; 43 44 public static void main(String[] args) { 45 Window012 win=new Window012(); 46 } 47 //构造函数 48 public Window012(){ 49 //构建组件 50 //工具条 51 jtb=new JToolBar(); 52 jb1=new JButton(new ImageIcon("image/new.jpg")); 53 jb1.setToolTipText("新建");//设置提示信息 54 jb2=new JButton(new ImageIcon("image/open.jpg")); 55 jb2.setToolTipText("打开"); 56 jb3=new JButton(new ImageIcon("image/save.jpg")); 57 jb3.setToolTipText("保存"); 58 jb4=new JButton(new ImageIcon("image/copy.jpg")); 59 jb4.setToolTipText("复制"); 60 jb5=new JButton(new ImageIcon("image/delete.jpg")); 61 jb5.setToolTipText("删除"); 62 jb6=new JButton(new ImageIcon("image/modify.jpg")); 63 jb6.setToolTipText("编辑"); 64 jb7=new JButton(new ImageIcon("image/print.jpg")); 65 jb7.setToolTipText("打印"); 66 jb8=new JButton(new ImageIcon("image/close.jpg")); 67 jb8.setToolTipText("关闭"); 68 69 jmb=new JMenuBar(); 70 //主菜单 71 menu1=new JMenu("文件(F)"); 72 menu1.setMnemonic(‘F‘);//设置助记符 73 menu2=new JMenu("编辑(E)"); 74 menu2.setMnemonic(‘E‘); 75 menu3=new JMenu("格式(O)"); 76 menu3.setMnemonic(‘O‘); 77 menu4=new JMenu("查看(V)"); 78 menu4.setMnemonic(‘V‘); 79 menu5=new JMenu("帮助(H)"); 80 menu5.setMnemonic(‘H‘); 81 82 //文件--新建--子目录 83 xinjian=new JMenu("新建"); 84 file=new JMenuItem("文件"); 85 project=new JMenuItem("工程"); 86 87 item2=new JMenuItem("打开(O)"); 88 item2.setMnemonic(‘O‘); 89 item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));//设置ctrl快捷组合键 90 item3=new JMenuItem("保存(S)"); 91 item3.setMnemonic(‘S‘); 92 item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); 93 item4=new JMenuItem("另存为(A)"); 94 item4.setMnemonic(‘A‘); 95 item5=new JMenuItem("页面设置(U)"); 96 item5.setMnemonic(‘U‘); 97 item6=new JMenuItem("打印(P)"); 98 item6.setMnemonic(‘P‘); 99 item6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK)); 100 item7=new JMenuItem("退出(X)"); 101 item7.setMnemonic(‘X‘); 102 103 eitem1=new JMenuItem("撤消(U)"); 104 eitem1.setMnemonic(‘U‘); 105 eitem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK)); 106 eitem2=new JMenuItem("剪切(T)"); 107 eitem2.setMnemonic(‘T‘); 108 eitem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK)); 109 eitem3=new JMenuItem("复制(C)"); 110 eitem3.setMnemonic(‘C‘); 111 eitem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK)); 112 eitem4=new JMenuItem("粘贴(P)"); 113 eitem4.setMnemonic(‘P‘); 114 eitem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK)); 115 eitem5=new JMenuItem("删除(L)"); 116 eitem5.setMnemonic(‘L‘); 117 eitem5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0)); 118 eitem6=new JMenuItem("查找(F)"); 119 eitem6.setMnemonic(‘F‘); 120 eitem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK)); 121 eitem7=new JMenuItem("查找下一个(N)"); 122 eitem7.setMnemonic(‘N‘); 123 eitem7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0)); 124 eitem8=new JMenuItem("替换(R)"); 125 eitem8.setMnemonic(‘R‘); 126 eitem8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK)); 127 eitem9=new JMenuItem("转到(G)"); 128 eitem9.setMnemonic(‘G‘); 129 eitem9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK)); 130 eitem10=new JMenuItem("全选(A)"); 131 eitem10.setMnemonic(‘A‘); 132 eitem10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK)); 133 eitem11=new JMenuItem("时间/日期(D)"); 134 eitem11.setMnemonic(‘D‘); 135 eitem11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0)); 136 137 oitem1=new JMenuItem("自动换行(W)"); 138 oitem1.setMnemonic(‘W‘); 139 oitem2=new JMenuItem("字体(F)"); 140 oitem2.setMnemonic(‘F‘); 141 142 vitem1=new JMenuItem("状态栏(S)"); 143 vitem1.setMnemonic(‘S‘); 144 145 hitem1=new JMenuItem("查看帮助(H)"); 146 hitem1.setMnemonic(‘H‘); 147 hitem2=new JMenuItem("关于记事本(A)"); 148 hitem2.setMnemonic(‘A‘); 149 150 jta=new JTextArea(); 151 152 //设定布局管理器 153 154 //加入组件 155 //将按钮添加到工具条上 156 jtb.add(jb1); 157 jtb.add(jb2); 158 jtb.add(jb3); 159 jtb.add(jb4); 160 jtb.add(jb5); 161 jtb.add(jb6); 162 jtb.add(jb7); 163 jtb.add(jb8); 164 165 //将菜单项添加到菜单上 166 xinjian.add(file); 167 xinjian.add(project); 168 169 menu1.add(xinjian); 170 menu1.add(item2); 171 menu1.add(item3); 172 menu1.add(item4); 173 menu1.addSeparator();//添加分割线 174 menu1.add(item5); 175 menu1.add(item6); 176 menu1.addSeparator(); 177 menu1.add(item7); 178 179 menu2.add(eitem1); 180 menu2.addSeparator(); 181 menu2.add(eitem2); 182 menu2.add(eitem3); 183 menu2.add(eitem4); 184 menu2.add(eitem5); 185 menu2.addSeparator(); 186 menu2.add(eitem6); 187 menu2.add(eitem7); 188 menu2.add(eitem8); 189 menu2.add(eitem9); 190 menu2.addSeparator(); 191 menu2.add(eitem10); 192 menu2.add(eitem11); 193 194 menu3.add(oitem1); 195 menu3.add(oitem2); 196 197 menu4.add(vitem1); 198 199 menu5.add(hitem1); 200 menu5.addSeparator(); 201 menu5.add(hitem2); 202 203 204 //将菜单添加到菜单条上 205 jmb.add(menu1); 206 jmb.add(menu2); 207 jmb.add(menu3); 208 jmb.add(menu4); 209 jmb.add(menu5); 210 211 //将菜单条添加到窗体上 212 this.setJMenuBar(jmb); 213 214 //将工具条添加到窗体上 215 this.add(jtb,BorderLayout.NORTH); 216 217 JScrollPane jsp=new JScrollPane(jta); 218 jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 219 this.add(jsp); 220 221 //窗体设置 222 this.setTitle("Java记事本"); 223 this.setSize(500, 400); 224 this.setLocationRelativeTo(null); 225 this.setVisible(true); 226 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 227 } 228 }
以上是关于java基础 swing编程实战的主要内容,如果未能解决你的问题,请参考以下文章