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 }
View Code

 

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 }
View Code

 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 }
View Code

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 }
View Code

 

以上是关于java基础 swing编程实战的主要内容,如果未能解决你的问题,请参考以下文章

JAVA入门到精通-第32讲-swing编程实战

java基础学习——Swing图形化用户界面编程

一道Java编程题

《java并发编程实战》

Java并发编程实战 04死锁了怎么办?

Java并发编程实战 04死锁了怎么办?