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

JBorderLayout,左边是JList,拆分窗格;
图片是放在JLabel上的,图片的地址写好就行;

在相关项目下面建立一个文件夹Folder,放置图片;或者复制粘贴;


拆分:水平拆分?垂直拆分?


拆分之后把jList和jl1这两个组件放进去;

可以伸缩:


在窗口左上角出现自己的图标?
Border布局;

多行文本框带滚动条,聊天窗口可滚动:


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

QQ号码、手机号码、电子邮箱会切换;
Border布局;中间JPanel,设置成Grid网格布局;
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]
xxxxxxxxxx38
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]
xxxxxxxxxx46
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
}











浙公网安备 33010602011771号