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

JAVA入门到精通-第32讲-swing编程实战相关推荐

  1. JAVA入门到精通-第43讲-IO编程-坦克大战10

    //当敌人子弹击中我的时候,死亡 this.hitEnemyTank( ); //每一个敌人的坦克击中我 //我的坦克被击中,爆炸,消失 //当敌人互相有碰撞的时候,不能往前面走了 矩形的任何一点不能 ...

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

    遇到的问题: 现在每登录一个人,后面的人是能看到前面的登录的人的: 但是,前面的人看不到后面的人登录: //后面每登录一个人,有责任去通知前面登录的人他已经上线了: 通知了完以后,需要更改好友在线的情 ...

  3. JAVA入门到精通-第73讲-学生管理系统5-dao.sqlhelper

    -Model2模式 如果数据模型会很多,怎么办? 处理业务逻辑的:Model层 后台又分为:处理业务逻辑和对数据库的操作DAO-data access object -决定,再抽象一层出来:数据模型: ...

  4. JAVA入门到精通-第71讲-学生管理系统3-增删改查

    模式的概念(mv): 提高系统的可读性.可维护性.效率:  --------------------- 添加.修改.删除 //添加的界面做好了 //对添加的按钮做个响应,直接操作数据库: //完全可以 ...

  5. JAVA入门到精通-第7讲-成员方法-构造方法

    方法的声明没有函数体: void 不需要return; 其他的如int 是需要return的: 2.3默认是double类型的,把double的数强行传给float类型的: 转置:横坐标和纵坐标转换: ...

  6. JAVA入门到精通-第64讲-sql server备份恢复

    邮件服务器备份: c 创建  查询  更新  删除  /  增删改查: 分离:把数据库aaa暂时离开数据库,可以分离,附加到另外地方去: .mdf  和  .ldf 这两个文件 所有任务---分离数据 ...

  7. JAVA入门到精通-第38讲-线程-坦克大战6

    应用程序在内存中开辟空间-进程: 内存-大脑容量: 反应切换的速度-CPU: 试图去尝试别的进程的地址空间---病毒: 线程是由进程(应用程序)创建的: 涉及到并发,就会涉及到线程:迅雷下载: 线程不 ...

  8. JAVA入门到精通-第6讲-成员属性-成员方法

    b.age=10; 它是根据age和name所占的数据类型还划分空间的: b没有赋值,孤零零地放在那; b=a: 让b也指向a所指向的空间,实际上是一个引用: 再次证明,其实指向的是同一块空间:引用传 ...

  9. JAVA入门到精通-第16讲-数组

      数组的必要性: 数组从0开始编号,arr[0]:习惯从0开始:比如外国人建地下室:  错误:数组越界:  ArrayIndexOutofBoundsException:5  arr.length, ...

最新文章

  1. c语言笔试题(带答案)
  2. boost::core_numbers用法的测试程序
  3. 山师计算机试题答案,山师计算机应用技术试题及答案
  4. iOS中POST请求
  5. python字符串筛选输出_如何在Python中过滤字符串列表
  6. 使用openssl生成PEM格式私钥和公钥及ECDSA签名
  7. java 返回第k小的数_java – 给定n和k,返回第k个置换序列
  8. LeetCode(893)——特殊等价字符串组(JavaScript)
  9. 修改服务器后账套不存在,金蝶KIS专业版环境配置常见问题
  10. delphi 获取计算机,Delphi中用GetTickCount获取计算机运行时间
  11. Linux 下使用 Wine 安装运行 TM2008 Beta 及相关问题解决
  12. html广告代码自适应,很实用的对联广告代码(自适应高度)
  13. 模型的泛化能力--正则化
  14. 图形界面中消息盒子的使用
  15. “朋友”两个字好辛苦
  16. 时隔4年,翟天临怒怼网友:论文写不过是你能力不行...
  17. YAMLException: bad indentation of a mapping entry at line 解决
  18. 135微信编辑器html模式,135微信编辑器如何使用 135微信编辑器使用方法教程
  19. 装逼神器,逼真黑客范儿
  20. python循环代码优化技巧_记一次优化python循环代码逻辑的过程

热门文章

  1. 把公网ip通过DNSPOD进行域名解析
  2. ods,dw,dm理解
  3. 神经网络模型matlab例子,神经网络及其matlab实现
  4. IP冲突的本质是什么?
  5. 19-20-1计算机网络quiz2
  6. MybatisPlus Page类的解析与使用
  7. Flask教程--第一个Flask应用:调试模式
  8. 聊城初中计算机考试成绩查询,聊城市初中学业水平考试成绩查询入口2021 http://wsbm.lcedu.cn...
  9. rf运行python脚本报错_tools
  10. python 求扇形面积