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

Posted 夏至稻花如白练,大暑池畔赏红莲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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    容器类组件
*/