JAVA入门到精通-第31讲-常见组件
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175717068-1590755528.png)
面板组件-Jpanel
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175717556-366494030.png)
一个JFrame,多个JPanel;
JPanel默认是流布局;FlowLayout;
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175718001-709159961.png)
通过JPanel达到复杂布局的目的;
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175718278-1031427713.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175718724-1902427105.png)
可以认为是网格布局,有3个JPanel;2个Label;2个按钮;
一个密码框和一个文本输入框;
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175719203-1609985894.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175719430-1608396114.png)
最终展现出来的还是靠JFrame展现的
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175719781-1631036596.png)
网格布局好点,3个JPanel,用流布局,控件往里加;
ButtonGroup按钮组;一组里面只能选择一个;
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175720081-751810638.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175720395-1430966271.png)
对单选框管理,就是把它加入到ButtonGroup里面;
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175720628-2005747294.png)
单选框也是一个个放进JPanel的;
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175720888-490957245.png)
最后把JPanel全部加入到JFrame里面:
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175721205-1657278446.png)
最后,在主函数里面创建对象实例进行构造;
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175721477-1943390211.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175721701-265045638.png)
JComboBox:
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175722085-33361890.png)
JScrollPane/JList:![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175722085-33361890.png)
JList:
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175722478-1532189068.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175722478-1532189068.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175722695-486520945.png)
最大显示的是在JList里,添加是在JScroll;
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175723036-1844552985.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175723464-1387707795.png)
Swing组件--面板组件
面板组件(JPanel)--介绍
在图形用户界面编程中,如果只是普通的组件布局,我们用前面讲的三种布局管理器就可以解决,但在比较复杂的布局要求时,就需要使用布局管理器的组合使用。
面板组件(JPanel)--使用[Window005.java]
JPanel:面板组件,非顶层容器,一个界面只可以有一个JFrame窗体组件,但可以有多个JPanel面板组件,而JPanel上也可以使用FlowLayout、BorderLayout、GirdLayout等各种布局管理器,这样可以组合使用达到较为复杂的布局效果。
xxxxxxxxxx
46
1
/**
2
* 多种布局管理器,面板组件(JPanel)--使用
3
*/
4
import java.awt.*;
5
import javax.swing.*;
6
public class Window005 extends JFrame{
7
//定义组件
8
JPanel jp1,jp2;
9
JButton jb1,jb2,jb3,jb4,jb5,jb6;
10
public static void main(String[] args) {
11
Window005 win=new Window005();
12
}
13
//构造函数
14
public Window005(){
15
//创建组件
16
jp1=new JPanel();//JPanel布局默认是FlowLayout流布局
17
jp2=new JPanel();
18
19
jb1=new JButton("西瓜");
20
jb2=new JButton("苹果");
21
jb3=new JButton("荔枝");
22
jb4=new JButton("葡萄");
23
jb5=new JButton("桔子");
24
jb6=new JButton("香蕉");
25
26
//设置布局管理器(Jpanel默认流布局)
27
28
//添加JPanel
29
jp1.add(jb1);
30
jp1.add(jb2);
31
jp2.add(jb3);
32
jp2.add(jb4);
33
jp2.add(jb5);
34
35
//把Panel加入JFrame
36
this.add(jp1, BorderLayout.NORTH);
37
this.add(jb6, BorderLayout.CENTER);
38
this.add(jp2, BorderLayout.SOUTH);
39
40
//设置窗体
41
this.setSize(300, 250);//窗体大小
42
this.setLocation(200, 200);//屏幕显示初始位置
43
this.setVisible(true);//显示
44
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出窗体后将JFrame同时关闭
45
}
46
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175723970-1288053968.png)
------------------------------------------------------------------------------
面板(JPanel)组件--注意事项
1、JPanel是JComponent的子类;
2、属于容器类组件,可以加入别的组件;
3、默认布局管理器是流式布局(FlowLayout)
Swing组件--文本框/密码框/标签组件[Window006.java]
几个常用组件
在图形用户界面编程中,我们常常会提供用户登录界面,比如登录到会员管理系统,登录到工资管理系统、仓库管理系统等。这时候我们就会用到:
1、文本框(JTextField)
2、密码框(JPasswordField)
3、标签(JLable)
xxxxxxxxxx
62
1
/**
2
* Swing组件--文本框(JTextField)/密码框(JPasswordField)/标签(JLable)组件使用
3
*/
4
import java.awt.*;
5
import javax.swing.*;
6
public class Window006 extends JFrame{
7
//定义组件
8
JPanel jp1,jp2,jp3;//面板
9
JLabel jlb1,jlb2;//标签
10
JButton jb1,jb2;//按钮
11
JTextField jtf;//文本
12
JPasswordField jpf;//密码
13
public static void main(String[] args) {
14
Window006 win=new Window006();
15
}
16
17
//构造函数
18
public Window006(){
19
//创建面板
20
jp1=new JPanel();
21
jp2=new JPanel();
22
jp3=new JPanel();
23
//创建标签
24
jlb1=new JLabel("用户名");
25
jlb2=new JLabel("密 码");
26
//创建按钮
27
jb1=new JButton("登录");
28
jb2=new JButton("取消");
29
//创建文本框
30
jtf=new JTextField(10);
31
//创建密码框
32
jpf=new JPasswordField(10);
33
34
//设置布局管理
35
this.setLayout(new GridLayout(3, 1));//网格式布局
36
37
//加入各个组件
38
jp1.add(jlb1);
39
jp1.add(jtf);
40
41
jp2.add(jlb2);
42
jp2.add(jpf);
43
44
jp3.add(jb1);
45
jp3.add(jb2);
46
47
//加入到JFrame
48
this.add(jp1);
49
this.add(jp2);
50
this.add(jp3);
51
52
//设置窗体
53
this.setTitle("用户登录");//窗体标签
54
this.setSize(300, 150);//窗体大小
55
this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
56
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
57
this.setVisible(true);//显示窗体
58
59
//锁定窗体
60
this.setResizable(false);
61
}
62
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175724444-1042931999.png)
------------------------------------------------------------------------------
Swing组件--复选框/单选框组件[Window007.java]
几个常用组件
在图形用户界面编程中,我们常常会提供用户注册界面,这时候我们就会用到:
1、复选框组件(JCheckBox)
2、单选框组件(JRadioButton)
特别说明:
同一组单选按钮必需先创建ButtonGroup,然后把单选框组件放入到ButtonGroup中
xxxxxxxxxx
69
1
/**
2
* 复选框组件(JCheckBox)和单选框组件(JRadioButton)使用
3
*/
4
import java.awt.*;
5
import javax.swing.*;
6
public class Window007 extends JFrame{
7
//定义组件
8
JPanel jp1,jp2,jp3;
9
JLabel jl1,jl2;
10
JCheckBox jcb1,jcb2,jcb3;
11
JRadioButton jrb1,jrb2;
12
ButtonGroup bg;
13
JButton jb1,jb2;
14
public static void main(String[] args) {
15
Window007 win=new Window007();
16
}
17
//构造函数
18
public Window007(){
19
//创建组件
20
jp1=new JPanel();
21
jp2=new JPanel();
22
jp3=new JPanel();
23
24
jl1=new JLabel("你最喜欢的运功:");
25
jl2=new JLabel("你的性别:");
26
27
jcb1=new JCheckBox("足球");
28
jcb2=new JCheckBox("篮球");
29
jcb3=new JCheckBox("网球");
30
31
jrb1=new JRadioButton("男");
32
jrb2=new JRadioButton("女");
33
34
jb1=new JButton("注册用户");
35
jb2=new JButton("取消注册");
36
37
//一定要把jrb1与jrb2放入到一个ButtonGroup中
38
ButtonGroup bg=new ButtonGroup();
39
bg.add(jrb1);
40
bg.add(jrb2);
41
42
//创建布局
43
this.setLayout(new GridLayout(3, 1));
44
45
//加入组件
46
jp1.add(jl1);
47
jp1.add(jcb1);
48
jp1.add(jcb2);
49
jp1.add(jcb3);
50
51
jp2.add(jl2);
52
jp2.add(jrb1);
53
jp2.add(jrb2);
54
55
jp3.add(jb1);
56
jp3.add(jb2);
57
58
this.add(jp1);
59
this.add(jp2);
60
this.add(jp3);
61
62
//设置窗体
63
this.setTitle("用户注册");
64
this.setSize(300, 150);
65
this.setLocationRelativeTo(null);
66
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
67
this.setVisible(true);
68
}
69
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175724890-70101122.png)
------------------------------------------------------------------------------
Swing组件--下拉框/列表框/流动空格组件[Window008.java]
在图形用户界面编程中,我们常常会提供用户调查界面,这个时候我们会用到:
1、下拉框组件(JComboBox)
2、列表框组件(JList)
3、滚动窗格组件(JScrollPane)
特别说明:
一般来说,列表框组件+滚动窗格组件是结合使用的。目的是让列表框中的选项可以有滚动条支持。
x
1
/**
2
* 下拉框(JComboBox)/列表框(JList)/滚动空格(JScrollPane)的使用
3
*/
4
import java.awt.*;
5
import javax.swing.*;
6
public class Window008 extends JFrame{
7
//定义组件
8
JPanel jp1,jp2;
9
JLabel jl1,jl2;
10
JComboBox jcb;
11
JList jl;
12
JScrollPane jsp;
13
public static void main(String[] args) {
14
Window008 win=new Window008();
15
}
16
//构造函数
17
public Window008(){
18
//建立组件
19
jp1=new JPanel();
20
jp2=new JPanel();
21
22
jl1=new JLabel("你的籍贯:");
23
jl2=new JLabel("旅游地点:");
24
25
String[] jg={"北京","上海","天津","火星"};
26
jcb=new JComboBox(jg);
27
28
String[] dd={"长城","东方明珠","海河","什么什么"};
29
jl=new JList(dd);
30
//设置你希望显示多少个选项
31
jl.setVisibleRowCount(2);//滚动条显示setVisibleRowCount(?)?为显示条数
32
jsp=new JScrollPane(jl);
33
34
//设定布局
35
this.setLayout(new GridLayout(3, 1));
36
37
//加入组件
38
jp1.add(jl1);
39
jp1.add(jcb);
40
41
jp2.add(jl2);
42
jp2.add(jsp);
43
44
this.add(jp1);
45
this.add(jp2);
46
47
//设置窗体
48
this.setTitle("用户注册");
49
this.setSize(300, 300);
50
this.setLocationRelativeTo(null);
51
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
52
this.setVisible(true);
53
}
54
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130175725429-1890071917.png)