java AWT的缺点:
平台不兼容(不同的品台样式不一样,有些组件在某些品台上不兼容)。
java Swing包结构:
javax.swing包:几乎所有的组件都在这里。
swing.border包:包含很多绘制边框的类。
swing.event包:包含了很多事件监听的类。
swing.table包:Swing包中JTable组件,但是其支持的类都在swing.table包中。
swing.text包:这个包下面有四个用于显示和编辑文本的包。
java Swing helloWorld代码:
1 import javax.swing.*;
2 public class Swing_001 {
3 public static void main(String args []){
4 JFrame jFrame = new JFrame("JFrame");//最外层
5 jFrame.setSize(600,400);
6 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置右上角的最大化,最小化,关闭的作用。
7 jFrame.setVisible(true);
8 }
9 }
java Swing组件层次:
上图中:JComponet是不能独立显示的组件。Window是可以独立显示的组件。
javax.Swing包中的组件有三种类型:(顶层组件,中间组件,基本组件)
1:顶层组件:(JFrame,JApplet,JDialog,JWindow)前面说的可以独立存在的组件
2:中间容器:(JPanel,JScrollPane,JSplitPane,JToolBar)可以充当载体但是不能独立存在
3:基本组件: (JButton,JList,JMenu,JComboBox,JTextField) 最终实现人机交互的的组件
案例:
1 import javax.swing.*;
2 public class Swing_001 {
3 public static void main(String args []){
4 JFrame jFrame = new JFrame("顶层组件"); //顶层容器
5 jFrame.setSize(600,400);
6 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
7 JPanel jPanel = new JPanel(); //中间容器
8 jFrame.setContentPane(jPanel); //将中间容器添加到顶层容器中
9 JButton jButton = new JButton("按钮"); //基本组件
10 jPanel.add(jButton); //基本组件放到中间容器中
11 jFrame.setVisible(true); //放到最后(放到前面不行)
12 }
13 }
Window类:
window描述顶层容器类。用于提供中间容器的绘制面板。在Swing中顶层容器有主要有三种。
1:JFrame:用来设计类似于Windows系统的窗口的界面。
2:JDialog:和JFrame类似,但是这个主要用作对话框,弹框。
3:JApplet:用来设计可以嵌入网页的java小程序。
将组件放到*容器中:
不像在AWT中,在Swing中放置一个组件到*容器中需要添加中间容器:*容器 》 中间容器 》 基本组件。
中间容器是轻量级的,*容器是重量级的。这样可以避免使用重量级的*容器。
在JFrame中添加中间容器和中间组件有两种方法:
1:使用getContentPane()方法获取到JFrame的内容,然后在内容的基础上添加基本组件:frame.getContentPane().add(基本组件)
2:使用setContentPane()直接在JFrame上添加一个中间容器(JPanel,JDesktopPane)而基本组件放在了中间组件中
方法2案例:
1 import javax.swing.*;
2 public class Swing_001 {
3 public static void main(String args []){
4 //创建并渲染*容器
5 JFrame jFrame = new JFrame("*容器");
6 jFrame.setSize(600,400);
7 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
8 jFrame.setVisible(true);
9 //创建中间容器JPanel
10 JPanel jPanel = new JPanel();
11 //将JPanel放到*容器中
12 jFrame.setContentPane(jPanel);
13 //创建两个按钮,放到中间容器中
14 JButton jButtonA = new JButton("按钮A");
15 JButton jButtonB = new JButton("按钮B");
16 jPanel.add(jButtonA);
17 jPanel.add(jButtonB);
18 }
19 }
将菜单添加到*容器中:
1 package swing;
2 import javax.swing.*;
6 public class swing001 {
7 public static void main(String agrs[]){
8 //顶层窗口
9 JFrame jFrame = new JFrame("顶层容器");
10 jFrame.setSize(600,500);
11 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
12 //菜单条
13 JMenuBar jMenuBar = new JMenuBar();
14 //菜单
15 JMenu jMenuA = new JMenu("菜单A");
16 JMenu jMenuB = new JMenu("菜单B");
17 //菜单条添加菜单
18 jMenuBar.add(jMenuA);
19 jMenuBar.add(jMenuB);
20 //菜单项
21 JMenuItem jMenuItemA = new JMenuItem("菜单项A");
22 JMenuItem jMenuItemB = new JMenuItem("菜单项B");
23 //菜单项添加菜单项
24 jMenuA.add(jMenuItemA);
25 jMenuA.add(jMenuItemB);
26 //*窗口添加菜单条
27 jFrame.setJMenuBar(jMenuBar);
28 jFrame.setVisible(true);
29
30 }
31 }