打赏

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

 JBorderLayout,左边是JList,拆分窗格;
  图片是放在JLabel上的,图片的地址写好就行;
 
 在相关项目下面建立一个文件夹Folder,放置图片;或者复制粘贴;
 
 
拆分:水平拆分?垂直拆分?
 
 拆分之后把jList和jl1这两个组件放进去;
 
 
可以伸缩:
 
 在窗口左上角出现自己的图标?
 Border布局;
 
  
  多行文本框带滚动条,聊天窗口可滚动:
 
 

 加入QQ左上角图标:
 
 
   转成图片,getImage;
   Border布局很有用,
  CENTER会被自动挤满;

  
 QQ号码、手机号码、电子邮箱会切换;
 Border布局;中间JPanel,设置成Grid网格布局;
 
 
 因为是选项卡, 翻页会出现3个Panel;

 
字体设置:
 超链接:
 鼠标变为手:
 
 
 JAVA最重要的是后台开发。
   树干-树枝-树叶;

在cmd后台跑代码:
 

 
 JMenuItem:
 
JMenu:
把JMenu添加到JMenuBar;把JMenuItem添加到menu1里面:


 
 
 
 设置键盘快捷键:

  一层一层加:
  
 
 
-------------------------------------------------------------------------
Swing组件--总结
总结:
1、本单讲解了Swing的常用组件(JFrame(框架)、Jpanel(面板)、JButton(按钮)、JLable(标签)、JTextField(文本框)、JPasswordField(密码框)、JCheckBox(复选框)、JRadioButton(单选框)、JComboBox(下拉框)、JScrollPane(滚动窗格)、JList(列表框)),当然Swing组件还有很多,在后面使用时讲解。
2、三大布局管理器(BorderLayout(边界布局)、FlowLayout(流布局)、GridLayout(网格布局)),要灵活使用,从而满足设计需求。

gui编程实践--金山词霸2007
涉及到新的Swing组件:
1、拆分窗格(JSplitPane)属于容器类组件[Window009.java]
xxxxxxxxxx
38
 
1
/**
2
* 拆分窗格(JSplitPane)的使用
3
*/
4
import java.awt.*;
5
import javax.swing.*;
6
public class Window009 extends JFrame{
7
    //定义组件
8
    JSplitPane jsp;
9
    JList jl;
10
    JLabel jlb;
11
    public static void main(String[] args) {
12
        Window009 win=new Window009();
13
}
14
    //构造函数
15
    public Window009(){
16
        //建立组件
17
        String[] words={"boy","girl","bird","close"};
18
        jl=new JList(words);
19
        
20
        jlb=new JLabel(new ImageIcon("images/cb.jpg"));//访问时路径\\或/
21
        //拆分窗格
22
        jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jl,jlb);
23
        //可以收缩变化
24
        jsp.setOneTouchExpandable(true);
25
        
26
        //设定布局管理器(JFrame本身就是BorderLayout布局)
27
        
28
        //加入组件
29
        this.add(jsp);
30
                
31
        //设置窗体
32
        this.setTitle("金山词霸2007");
33
        this.setSize(400, 300);
34
        this.setLocationRelativeTo(null);
35
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
36
        this.setVisible(true);
37
    }
38
}
 
------------------------------------------------------------------------------
gui编程实战--qq聊天界面
涉及到新的Swing组件
1、多行文本框(JTextArea)组件[Window010.java]
xxxxxxxxxx
46
 
1
/**
2
* 多行文本框(JTextArea)组件使用
3
*/
4
import java.awt.*;
5
import javax.swing.*;
6
public class Window010 extends JFrame{
7
    //定义组件
8
    JTextArea jta=null;
9
    JScrollPane jsp=null;
10
    JPanel jp1=null;
11
    JComboBox jcb=null;
12
    JTextField jtf=null;
13
    JButton jb=null;
14
    public static void main(String[] args) {
15
        Window010 win=new Window010();
16
    }
17
    //构造函数
18
    public Window010(){
19
        //构建组件
20
        jta=new JTextArea();
21
        jsp=new JScrollPane(jta);
22
        jp1=new JPanel();
23
        String[] chatter={"布什","拉登"};
24
        jcb=new JComboBox(chatter);
25
        jtf=new JTextField(10);
26
        jb=new JButton("发送");
27
        //设定布局管理器
28
        
29
        //加入组件
30
        jp1.add(jcb);
31
        jp1.add(jtf);
32
        jp1.add(jb);
33
        
34
        this.add(jsp);
35
        this.add(jp1,BorderLayout.SOUTH);
36
        
37
        //设定窗体
38
        this.setTitle("QQ聊天窗口");
39
        this.setIconImage((new ImageIcon("images\\qe.jpg")).getImage());//设置标题栏内图标
40
        this.setSize(300, 200);
41
        this.setLocationRelativeTo(null);
42
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
43
        this.setVisible(true);
44
        this.setResizable(false);
45
    }
46
}
 
------------------------------------------------------------------------------
gui编程实战--QQ登录界面
涉及到新的Swing组件:
1、页签组件(JTabbedPane)选项卡窗格[Window011.java]
x
 
1
/**
2
* 页签组件(JTabbedPane)选项卡窗格--使用QQ登录界面
3
*/
4
import java.awt.*;
5
import javax.swing.*;
6
public class Window011 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
    public static void main(String[] args) {
36
        Window011 win=new Window011();
37
    }
38
    //构造函数
39
    public Window011(){
40
        //创建组件
41
        //创建JFrame北部JLabel1组件
42
        jl1=new JLabel(new ImageIcon("images/qqdl.jpg"));
43
44
        //创建JFrame中部JPanel2组件
45
        jl2=new JLabel("QQ号码",JLabel.CENTER);
46
        jl3=new JLabel("QQ密码",JLabel.CENTER);
47
        jl4=new JLabel("忘记密码",JLabel.CENTER);
48
        jl4.setFont(new Font("宋体",Font.PLAIN,16));//设置字体,字号
49
        jl4.setForeground(Color.BLUE);//设置字体颜色
50
        jl5=new JLabel("<html><a href='www.qq.com'>申请密码保护</a></html>");
51
        jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//鼠标移动到jl5后会变成手指图标
52
        
53
        jtf=new JTextField();
54
        jpf=new JPasswordField();
55
        jb4=new JButton("清除号码");//JButton上可以放图片。
56
        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
        this.setTitle("QQ登录界面");
139
        //ImageIcon icon=new ImageIcon("图片路径");
140
        //this.setIconImage(icon.getImage());
141
        this.setIconImage((new ImageIcon("images/qe.jpg")).getImage());
142
        this.setSize(350, 300);
143
        this.setLocationRelativeTo(null);
144
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
145
        this.setVisible(true);
146
        this.setResizable(false);
147
    }
148
}
------------------------------------------------------------------------------
gui编程实战--记事本界面[Window012.java]
涉及到新的Swing组件
/**
* 1、菜单组件
    JMenuBar      菜单条组件    树干
    JMenu            菜单组件       树枝
    JMenuItem     菜单项组件    树叶
    2、二级菜单制作
    JMenu里面可以嵌套JMenu
    3、工具条组件
    JToolBar    容器类组件
*/
 
1
import java.awt.*;
2
import java.awt.event.InputEvent;
3
import java.awt.event.InputMethodEvent;
4
import java.awt.event.KeyEvent;
5
import javax.swing.*;
6
public class Window012 extends JFrame{
7
    //文件组定义组件
8
    JMenuBar jmb;//菜单条组件
9
    JMenu menu1,menu2,menu3,menu4,menu5;//主菜单:文件、编辑、格式、查看、帮助
10
    JMenuItem item2,item3,item4,item5,item6,item7;//子菜单:新建、打开、保存、另存为、页面设置、打印、退出
11
    JMenu xinjian;//二级菜单
12
    JMenuItem file,project;
13
    
14
    //编辑组定义组件
15
    //编辑:撤消、剪切、复制、粘贴、删除、查找、查找下一个、替换、转到、全选、时间/日期
16
    JMenuItem eitem1,eitem2,eitem3,eitem4,eitem5,eitem6,eitem7,eitem8,eitem9,eitem10,eitem11;
17
    
18
    //格式组定义组件
19
    JMenuItem oitem1,oitem2;//格式:自动换行、字体
20
    
21
    //查看组定义组件
22
    JMenuItem vitem1;//查看:状态栏
23
    
24
    //帮助组定义组件
25
    JMenuItem hitem1,hitem2;//帮助:查看帮助、关于记事本
26
    
27
    JTextArea jta;
28
    //工具条
29
    JToolBar jtb;
30
    JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8;
31
    
32
    public static void main(String[] args) {
33
        Window012 win=new Window012();
34
    }
35
    //构造函数
36
    public Window012(){
37
        //构建组件
38
        //工具条
39
        jtb=new JToolBar();
40
        jb1=new JButton(new ImageIcon("images/new.jpg"));
41
        jb1.setToolTipText("新建");//设置提示信息
42
        jb2=new JButton(new ImageIcon("images/open.jpg"));
43
        jb2.setToolTipText("打开");
44
        jb3=new JButton(new ImageIcon("images/save.jpg"));
45
        jb3.setToolTipText("保存");
46
        jb4=new JButton(new ImageIcon("images/copy.jpg"));
47
        jb4.setToolTipText("复制");
48
        jb5=new JButton(new ImageIcon("images/delete.jpg"));
49
        jb5.setToolTipText("删除");
50
        jb6=new JButton(new ImageIcon("images/modify.jpg"));
51
        jb6.setToolTipText("编辑");
52
        jb7=new JButton(new ImageIcon("images/print.jpg"));
53
        jb7.setToolTipText("打印");
54
        jb8=new JButton(new ImageIcon("images/close.jpg"));
55
        jb8.setToolTipText("关闭");
56
        
57
        jmb=new JMenuBar();
58
        //主菜单
59
        menu1=new JMenu("文件(F)");
60
        menu1.setMnemonic('F');//设置助记符
61
        menu2=new JMenu("编辑(E)");
62
        menu2.setMnemonic('E');
63
        menu3=new JMenu("格式(O)");
64
        menu3.setMnemonic('O');
65
        menu4=new JMenu("查看(V)");
66
        menu4.setMnemonic('V');
67
        menu5=new JMenu("帮助(H)");
68
        menu5.setMnemonic('H');
69
        
70
        //文件--新建--子目录
71
        xinjian=new JMenu("新建");
72
        file=new JMenuItem("文件");
73
        project=new JMenuItem("工程");
74
        
75
        item2=new JMenuItem("打开(O)");
76
        item2.setMnemonic('O');
77
        item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));//设置ctrl快捷组合键
78
        item3=new JMenuItem("保存(S)");
79
        item3.setMnemonic('S');
80
        item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
81
        item4=new JMenuItem("另存为(A)");
82
        item4.setMnemonic('A');
83
        item5=new JMenuItem("页面设置(U)");
84
        item5.setMnemonic('U');
85
        item6=new JMenuItem("打印(P)");
86
        item6.setMnemonic('P');
87
        item6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
88
        item7=new JMenuItem("退出(X)");
89
        item7.setMnemonic('X');
90
        
91
        eitem1=new JMenuItem("撤消(U)");
92
        eitem1.setMnemonic('U');
93
        eitem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
94
        eitem2=new JMenuItem("剪切(T)");
95
        eitem2.setMnemonic('T');
96
        eitem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));
97
        eitem3=new JMenuItem("复制(C)");
98
        eitem3.setMnemonic('C');
99
        eitem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
100
        eitem4=new JMenuItem("粘贴(P)");
101
        eitem4.setMnemonic('P');
102
        eitem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
103
        eitem5=new JMenuItem("删除(L)");
104
        eitem5.setMnemonic('L');
105
        eitem5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
106
        eitem6=new JMenuItem("查找(F)");
107
        eitem6.setMnemonic('F');
108
        eitem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
109
        eitem7=new JMenuItem("查找下一个(N)");
110
        eitem7.setMnemonic('N');
111
        eitem7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
112
        eitem8=new JMenuItem("替换(R)");
113
        eitem8.setMnemonic('R');
114
        eitem8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));
115
        eitem9=new JMenuItem("转到(G)");
116
        eitem9.setMnemonic('G');
117
        eitem9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK));
118
        eitem10=new JMenuItem("全选(A)");
119
        eitem10.setMnemonic('A');
120
        eitem10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
121
        eitem11=new JMenuItem("时间/日期(D)");
122
        eitem11.setMnemonic('D');
123
        eitem11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
124
        
125
        oitem1=new JMenuItem("自动换行(W)");
126
        oitem1.setMnemonic('W');
127
        oitem2=new JMenuItem("字体(F)");
128
        oitem2.setMnemonic('F');
129
        
130
        vitem1=new JMenuItem("状态栏(S)");
131
        vitem1.setMnemonic('S');
132
        
133
        hitem1=new JMenuItem("查看帮助(H)");
134
        hitem1.setMnemonic('H');
135
        hitem2=new JMenuItem("关于记事本(A)");
136
        hitem2.setMnemonic('A');
137
        
138
        jta=new JTextArea();
139
        
140
        //设定布局管理器
141
        
142
        //加入组件
143
        //将按钮添加到工具条上
144
        jtb.add(jb1);
145
        jtb.add(jb2);
146
        jtb.add(jb3);
147
        jtb.add(jb4);
148
        jtb.add(jb5);
149
        jtb.add(jb6);
150
        jtb.add(jb7);
151
        jtb.add(jb8);
152
        
153
        //将菜单项添加到菜单上
154
        xinjian.add(file);
155
        xinjian.add(project);
156
        
157
        menu1.add(xinjian);
158
        menu1.add(item2);
159
        menu1.add(item3);
160
        menu1.add(item4);
161
        menu1.addSeparator();//添加分割线
162
        menu1.add(item5);
163
        menu1.add(item6);
164
        menu1.addSeparator();
165
        menu1.add(item7);
166
        
167
        menu2.add(eitem1);
168
        menu2.addSeparator();
169
        menu2.add(eitem2);
170
        menu2.add(eitem3);
171
        menu2.add(eitem4);
172
        menu2.add(eitem5);
173
        menu2.addSeparator();
174
        menu2.add(eitem6);
175
        menu2.add(eitem7);
176
        menu2.add(eitem8);
177
        menu2.add(eitem9);
178
        menu2.addSeparator();
179
        menu2.add(eitem10);
180
        menu2.add(eitem11);
181
        
182
        menu3.add(oitem1);
183
        menu3.add(oitem2);
184
        
185
        menu4.add(vitem1);
186
        
187
        menu5.add(hitem1);
188
        menu5.addSeparator();
189
        menu5.add(hitem2);
190
        
191
        //将菜单添加到菜单条上
192
        jmb.add(menu1);
193
        jmb.add(menu2);
194
        jmb.add(menu3);
195
        jmb.add(menu4);
196
        jmb.add(menu5);
197
        
198
        //将菜单条添加到窗体上
199
        this.setJMenuBar(jmb);
200
        
201
        //将工具条添加到窗体上
202
        this.add(jtb,BorderLayout.NORTH);
203
        
204
        JScrollPane jsp=new JScrollPane(jta);
205
        jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
206
        this.add(jsp);
207
        
208
        //窗体设置
209
        this.setTitle("Java记事本");
210
        this.setSize(500, 400);
211
        this.setLocationRelativeTo(null);
212
        this.setVisible(true);
213
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
214
    }
215
}

 

 




posted on 2018-11-30 17:58  XuCodeX  阅读(921)  评论(0编辑  收藏  举报

导航