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]

/**
* 拆分窗格(JSplitPane)的使用
*/
import java.awt.*;
import javax.swing.*;
public class Window009 extends JFrame{
//定义组件
JSplitPane jsp;
JList jl;
JLabel jlb;
public static void main(String[] args) {
Window009 win=new Window009();
}
//构造函数
public Window009(){
//建立组件
String[] words={"boy","girl","bird","close"};
jl=new JList(words);

jlb=new JLabel(new ImageIcon("images/cb.jpg"));//访问时路径\\或/
//拆分窗格
jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jl,jlb);
//可以收缩变化
jsp.setOneTouchExpandable(true);

//设定布局管理器(JFrame本身就是BorderLayout布局)

//加入组件
this.add(jsp);

//设置窗体
this.setTitle("金山词霸2007");
this.setSize(400, 300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}

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]

/**
* 多行文本框(JTextArea)组件使用
*/
import java.awt.*;
import javax.swing.*;
public class Window010 extends JFrame{
//定义组件
JTextArea jta=null;
JScrollPane jsp=null;
JPanel jp1=null;
JComboBox jcb=null;
JTextField jtf=null;
JButton jb=null;
public static void main(String[] args) {
Window010 win=new Window010();
}
//构造函数
public Window010(){
//构建组件
jta=new JTextArea();
jsp=new JScrollPane(jta);
jp1=new JPanel();
String[] chatter={"布什","拉登"};
jcb=new JComboBox(chatter);
jtf=new JTextField(10);
jb=new JButton("发送");
//设定布局管理器

//加入组件
jp1.add(jcb);
jp1.add(jtf);
jp1.add(jb);

this.add(jsp);
this.add(jp1,BorderLayout.SOUTH);

//设定窗体
this.setTitle("QQ聊天窗口");
this.setIconImage((new ImageIcon("images\\qe.jpg")).getImage());//设置标题栏内图标
this.setSize(300, 200);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false);
}
}

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]

/**
* 页签组件(JTabbedPane)选项卡窗格--使用QQ登录界面
*/
import java.awt.*;
import javax.swing.*;
public class Window011 extends JFrame{
//设定组件
//主页面北部
JLabel jl1;//标签

//主页面南部
JButton jb1,jb2,jb3;//按钮
JPanel jp1;//面板

//主页面中部
JTabbedPane jtp;//选项卡窗格
JPanel jp2,jp3,jp4;//面板

JLabel jl2,jl3,jl4,jl5;//标签
JTextField jtf;//文本框
JPasswordField jpf;//密码框
JButton jb4;//按钮
JCheckBox jcb1,jcb2;//复选框

//JPanel2组件
JLabel jl6,jl7;//标签
JTextField jtf1;
JPasswordField jpf1;

//JPanel3组件
JLabel jl8,jl9;//标签
JTextField jtf2;
JPasswordField jpf2;

public static void main(String[] args) {
Window011 win=new Window011();
}
//构造函数
public Window011(){
//创建组件
//创建JFrame北部JLabel1组件
jl1=new JLabel(new ImageIcon("images/qqdl.jpg"));

//创建JFrame中部JPanel2组件
jl2=new JLabel("QQ号码",JLabel.CENTER);
jl3=new JLabel("QQ密码",JLabel.CENTER);
jl4=new JLabel("忘记密码",JLabel.CENTER);
jl4.setFont(new Font("宋体",Font.PLAIN,16));//设置字体,字号
jl4.setForeground(Color.BLUE);//设置字体颜色
jl5=new JLabel("<html><a href=‘www.qq.com‘>申请密码保护</a></html>");
jl5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//鼠标移动到jl5后会变成手指图标

jtf=new JTextField();
jpf=new JPasswordField();
jb4=new JButton("清除号码");//JButton上可以放图片。
new JButton(new ImageIcon("图片路径"));

jcb1=new JCheckBox("隐身登录");
jcb2=new JCheckBox("记住密码");

jtp=new JTabbedPane();//选项卡窗格
jp2=new JPanel();
jp3=new JPanel();
//jp3.setBackground(Color.RED);//给面板设置背景色
jp4=new JPanel();
//jp4.setBackground(new Color(0,0,255));

//创建JFrame中部JTabbedPane选项卡JPanel3组件
jl6=new JLabel("手机号码",JLabel.CENTER);
jl7=new JLabel("密  码",JLabel.CENTER);
jtf1=new JTextField(20);
jpf1=new JPasswordField(20);

//创建JFrame中部JTabbedPane选项卡JPanel4组件
jl8=new JLabel("电子邮箱",JLabel.CENTER);
jl9=new JLabel("密  码",JLabel.CENTER);
jtf2=new JTextField(20);
jpf2=new JPasswordField(20);

//创建JFrame南部JPanel1组件
jp1=new JPanel();
jb1=new JButton("登 录");
jb2=new JButton("取 消");
jb3=new JButton("注册向导");

//设置布局管理器
jp2.setLayout(new GridLayout(3, 3));
//jp3.setLayout(new GridLayout(2, 2));
//jp4.setLayout(new GridLayout(2, 2));

//加入组件
//将组件添加到JPanel2中
jp2.add(jl2);//加入QQ号码标签
jp2.add(jtf);//加入文本框
jp2.add(jb4);//加入清除号码按扭

jp2.add(jl3);//加入QQ密码标签
jp2.add(jpf);//加入密码框
jp2.add(jl4);//加入忘记密码

jp2.add(jcb1);//加入隐身登陆复选框
jp2.add(jcb2);//加入记住密码复选框
jp2.add(jl5);//加入申请密码保护标签

//将组件添加到JPanel3中
jp3.add(jl6);
jp3.add(jtf1);
jp3.add(jl7);
jp3.add(jpf1);

//将组件添加到JPanel4中
jp4.add(jl8);
jp4.add(jtf2);
jp4.add(jl9);
jp4.add(jpf2);

//添加到JPanel1中
jp1.add(jb1);
jp1.add(jb2);
jp1.add(jb3);

//将面板添加到选项卡窗格上
jtp.add("QQ号码",jp2);//第一个参数代表选项卡名称,第二个参数代表对应的面板
jtp.add("手机号码",jp3);
jtp.add("电子邮箱",jp4);

//将JLabel1添加到Frame北部
this.add(jl1,BorderLayout.NORTH);

//将JPanle2添加到Frame中部
this.add(jtp,BorderLayout.CENTER);

//将JPanel1添加到Frame南部
this.add(jp1,BorderLayout.SOUTH);

//窗体设置
this.setTitle("QQ登录界面");
//ImageIcon icon=new ImageIcon("图片路径");
//this.setIconImage(icon.getImage());
this.setIconImage((new ImageIcon("images/qe.jpg")).getImage());
this.setSize(350, 300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false);
}
}

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    容器类组件

*/

import java.awt.*;
import java.awt.event.InputEvent;
import java.awt.event.InputMethodEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class Window012 extends JFrame{
//文件组定义组件
JMenuBar jmb;//菜单条组件
JMenu menu1,menu2,menu3,menu4,menu5;//主菜单:文件、编辑、格式、查看、帮助
JMenuItem item2,item3,item4,item5,item6,item7;//子菜单:新建、打开、保存、另存为、页面设置、打印、退出
JMenu xinjian;//二级菜单
JMenuItem file,project;

//编辑组定义组件
//编辑:撤消、剪切、复制、粘贴、删除、查找、查找下一个、替换、转到、全选、时间/日期
JMenuItem eitem1,eitem2,eitem3,eitem4,eitem5,eitem6,eitem7,eitem8,eitem9,eitem10,eitem11;

//格式组定义组件
JMenuItem oitem1,oitem2;//格式:自动换行、字体

//查看组定义组件
JMenuItem vitem1;//查看:状态栏

//帮助组定义组件
JMenuItem hitem1,hitem2;//帮助:查看帮助、关于记事本

JTextArea jta;
//工具条
JToolBar jtb;
JButton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8;

public static void main(String[] args) {
Window012 win=new Window012();
}
//构造函数
public Window012(){
//构建组件
//工具条
jtb=new JToolBar();
jb1=new JButton(new ImageIcon("images/new.jpg"));
jb1.setToolTipText("新建");//设置提示信息
jb2=new JButton(new ImageIcon("images/open.jpg"));
jb2.setToolTipText("打开");
jb3=new JButton(new ImageIcon("images/save.jpg"));
jb3.setToolTipText("保存");
jb4=new JButton(new ImageIcon("images/copy.jpg"));
jb4.setToolTipText("复制");
jb5=new JButton(new ImageIcon("images/delete.jpg"));
jb5.setToolTipText("删除");
jb6=new JButton(new ImageIcon("images/modify.jpg"));
jb6.setToolTipText("编辑");
jb7=new JButton(new ImageIcon("images/print.jpg"));
jb7.setToolTipText("打印");
jb8=new JButton(new ImageIcon("images/close.jpg"));
jb8.setToolTipText("关闭");

jmb=new JMenuBar();
//主菜单
menu1=new JMenu("文件(F)");
menu1.setMnemonic(‘F‘);//设置助记符
menu2=new JMenu("编辑(E)");
menu2.setMnemonic(‘E‘);
menu3=new JMenu("格式(O)");
menu3.setMnemonic(‘O‘);
menu4=new JMenu("查看(V)");
menu4.setMnemonic(‘V‘);
menu5=new JMenu("帮助(H)");
menu5.setMnemonic(‘H‘);

//文件--新建--子目录
xinjian=new JMenu("新建");
file=new JMenuItem("文件");
project=new JMenuItem("工程");

item2=new JMenuItem("打开(O)");
item2.setMnemonic(‘O‘);
item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));//设置ctrl快捷组合键
item3=new JMenuItem("保存(S)");
item3.setMnemonic(‘S‘);
item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
item4=new JMenuItem("另存为(A)");
item4.setMnemonic(‘A‘);
item5=new JMenuItem("页面设置(U)");
item5.setMnemonic(‘U‘);
item6=new JMenuItem("打印(P)");
item6.setMnemonic(‘P‘);
item6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
item7=new JMenuItem("退出(X)");
item7.setMnemonic(‘X‘);

eitem1=new JMenuItem("撤消(U)");
eitem1.setMnemonic(‘U‘);
eitem1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
eitem2=new JMenuItem("剪切(T)");
eitem2.setMnemonic(‘T‘);
eitem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));
eitem3=new JMenuItem("复制(C)");
eitem3.setMnemonic(‘C‘);
eitem3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
eitem4=new JMenuItem("粘贴(P)");
eitem4.setMnemonic(‘P‘);
eitem4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
eitem5=new JMenuItem("删除(L)");
eitem5.setMnemonic(‘L‘);
eitem5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
eitem6=new JMenuItem("查找(F)");
eitem6.setMnemonic(‘F‘);
eitem6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
eitem7=new JMenuItem("查找下一个(N)");
eitem7.setMnemonic(‘N‘);
eitem7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
eitem8=new JMenuItem("替换(R)");
eitem8.setMnemonic(‘R‘);
eitem8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,InputEvent.CTRL_MASK));
eitem9=new JMenuItem("转到(G)");
eitem9.setMnemonic(‘G‘);
eitem9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK));
eitem10=new JMenuItem("全选(A)");
eitem10.setMnemonic(‘A‘);
eitem10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
eitem11=new JMenuItem("时间/日期(D)");
eitem11.setMnemonic(‘D‘);
eitem11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));

oitem1=new JMenuItem("自动换行(W)");
oitem1.setMnemonic(‘W‘);
oitem2=new JMenuItem("字体(F)");
oitem2.setMnemonic(‘F‘);

vitem1=new JMenuItem("状态栏(S)");
vitem1.setMnemonic(‘S‘);

hitem1=new JMenuItem("查看帮助(H)");
hitem1.setMnemonic(‘H‘);
hitem2=new JMenuItem("关于记事本(A)");
hitem2.setMnemonic(‘A‘);

jta=new JTextArea();

//设定布局管理器

//加入组件
//将按钮添加到工具条上
jtb.add(jb1);
jtb.add(jb2);
jtb.add(jb3);
jtb.add(jb4);
jtb.add(jb5);
jtb.add(jb6);
jtb.add(jb7);
jtb.add(jb8);

//将菜单项添加到菜单上
xinjian.add(file);
xinjian.add(project);

menu1.add(xinjian);
menu1.add(item2);
menu1.add(item3);
menu1.add(item4);
menu1.addSeparator();//添加分割线
menu1.add(item5);
menu1.add(item6);
menu1.addSeparator();
menu1.add(item7);

menu2.add(eitem1);
menu2.addSeparator();
menu2.add(eitem2);
menu2.add(eitem3);
menu2.add(eitem4);
menu2.add(eitem5);
menu2.addSeparator();
menu2.add(eitem6);
menu2.add(eitem7);
menu2.add(eitem8);
menu2.add(eitem9);
menu2.addSeparator();
menu2.add(eitem10);
menu2.add(eitem11);

menu3.add(oitem1);
menu3.add(oitem2);

menu4.add(vitem1);

menu5.add(hitem1);
menu5.addSeparator();
menu5.add(hitem2);

//将菜单添加到菜单条上
jmb.add(menu1);
jmb.add(menu2);
jmb.add(menu3);
jmb.add(menu4);
jmb.add(menu5);

//将菜单条添加到窗体上
this.setJMenuBar(jmb);

//将工具条添加到窗体上
this.add(jtb,BorderLayout.NORTH);

JScrollPane jsp=new JScrollPane(jta);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
this.add(jsp);

//窗体设置
this.setTitle("Java记事本");
this.setSize(500, 400);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

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

}

来自为知笔记(Wiz)

原文地址:https://www.cnblogs.com/xuxaut-558/p/10045693.html

时间: 2024-08-24 10:10:55

JAVA入门到精通-第32讲-swing编程实战的相关文章

JAVA入门到精通-第46讲-IO编程.记事本开发

IO编程-记事本开发 fis.read(bytes) 字节数组: 通过fis把文件里面的1800个字符,尽可能的读, 最多读1024个.记录一下,0-1024记录到bytes; 再去读的首,fis.read试图1024个字节,不够了, 第二次读了776个,n=776:(0,776): 第三次,又准备读1024,这次一个读不到,返回-1: 退出循环: JMenuBar 菜单条是一个JMenuBar: JMenu File是一个JMenu; JMenuItem 下面这些选项是JMenuItem; 一

JAVA入门到精通-第45讲-IO编程

image1=ImageIO.read(new File("bomb_1.gif")); 图片拷贝: 输入流和输出流同时要用的问题: 图片读入到内存: 写入,输出到某个文件: 二进制文件,字节流完成: FileInputStream fis=new FileInputStream("xxxx.jpg"); 输出到指定文件:FileOutputStream  fos=null; 关闭打开的文件流: -----------------------------------

JAVA入门到精通-第44讲-IO编程

//FileOutputStream的使用 准备把它输出到d:\\ss.txt 文件, 文件不存在直接创建: 如果存在,可能会被覆盖: //字节流 FileOutputStream fos=null; //输出-Output-离开内存-Output/Write //如何把string转换成bytes数组: s.getBytes() //关闭文件流 //两个字符串的换行 world\r\n \r\n就是回车换行的意思 ----------------------------------------

JAVA入门到精通-第94讲-山寨QQ项目8-好友在线提示

遇到的问题: 现在每登录一个人,后面的人是能看到前面的登录的人的: 但是,前面的人看不到后面的人登录: //后面每登录一个人,有责任去通知前面登录的人他已经上线了: 通知了完以后,需要更改好友在线的情况: //不让同一个账号反复登录 //如果 好友不在线,则不能聊天 ================================ [ManageQqChat.java] /** * 这是一个管理用户聊天界面的类 */ package com.qq.client.tools; import jav

JAVA入门到精通-第31讲-常见组件

面板组件-Jpanel  一个JFrame,多个JPanel: JPanel默认是流布局:FlowLayout:  通过JPanel达到复杂布局的目的:  可以认为是网格布局,有3个JPanel:2个Label:2个按钮: 一个密码框和一个文本输入框:   最终展现出来的还是靠JFrame展现的  网格布局好点,3个JPanel,用流布局,控件往里加: ButtonGroup按钮组:一组里面只能选择一个:    对单选框管理,就是把它加入到ButtonGroup里面: 单选框也是一个个放进JPa

JAVA入门到精通-第35讲-事件处理-坦克大战3

画出弧形: g.drawArc: 前两个参数:代表中心点,后面代表宽,高,后面是弧度的大小:  50代表弧度,后面方向:    SWING编程三个部分: (1)组件和布局管理器: (2)绘图技术: (3)事件处理机制:  鼠标,键盘按下的某个按钮或者移动等都是事件: JAVA认为,消息是一种事件对象:事件监听者也是一个类: 事件监听者中有函数或者方法专门去处理事件: import  java.awt.Event.*; 需要对事件进行处理,把Event包带进去:  Border布局中间是 默认的:

JAVA入门到精通-第33讲-绘图技术.坦克大战1

    用的是Access数据库,安全性不够好,性能也不够强大:   躲在这里,坦克很少过来,做了一个随机数: 把得分的记录保存在数据库里面: SQLServer2005中型数据库:    (x,y)坐标:     800x600:     表示计算机屏幕上的每一行由800个点组成,共有600行:   共有480000个像素:   java绘图技术:   绘图一般在JPane上画: 覆盖JPanel的paintat方法 Graphics是一个图形画笔类,绘图的重要类,可以理解为一只画笔 supe

JAVA入门到精通-第72讲-学生管理系统4-model 2模式(1)

删除.查询.添加.修改: -修改: 每个字段都可能修改: //给?赋值 //在prepareStatement语句后面赋值才好用 //修改完了,更新数据 目前为止,已经完成了增删改查-Model1模式 最大特点: 界面和业务逻辑操作是放在一起的: 优点:简单,开发方便: 缺点:代码复用性不高: 中大型项目可读性差,可维护性不高: 前台后端混杂在一起的: 比如:"数据库密码换了, 所有涉及到数据库的地方都需要发生变化" =================================

JAVA入门到精通-第36讲-事件监听-坦克大战4

Java事件处理机制:  事件源:事件:事件监听者:事件处理方法:  任何一个类,只要实现了相应的接口,就可以去监听某个事件源: 一个类要实现监听的基本步骤:  a.实现相应的接口[KeyListener,MouseListener,ActionListener,WindowListener] b.把接口的处理方法根据需要重新编写(override) c.在事件源注册监听 d.事件传递是靠事件对象 通过ActionEvent传递事件: 通过事件进行委派事件模型进行事件处理:  一个事件源可能会生