java Swing图形界面开发_001
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 }