图形用户界面开发(gui)
在学习swing前,我们需要了解这样几个概念:awt、swing、swt、Jface。
sun公司提供了一个跨平台GUI开发工具包awt(抽象窗口工具箱Abstract Window Toolkit)。
sun公司又提供了swing,解决swt中存在的lcd(本地化)问题。
IBM为了解决swing耗内存的问题,创建了新的gui库swt。
IBM在swt的基础上开发了更强大的JFace。
Swing组件分类:
1、顶层容器:JFrame、JApplet、JDialog
2、中间层容器:JPanel、JScrollPane、JSplitPane、JToolBar
3、特殊中间层容器:JIternalFrame、JLayeredPane、JRootPane
4、基本控制容器:JButton、JComboBox、JList、JMenu、JSlider、JTestField
5、不可编辑信息显示容器:JLable、JProgressBar
6、可编辑信息显示容器:JTable、JFileChooser、JTree
一个swing例子Swing.java,显示helloWorld。
package com.test.swing; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Swing extends JFrame{ //一个组件 public JLabel label = null; //JPanel是一个中间层容器类,可以添加其他组件。 public JPanel jPanel = null; public Swing(){ //给窗体设置标题 this.setTitle("helloWorld!"); //设置大小,按像素计数 this.setSize(300, 300); //设置窗口初始位置 this.setLocation(100, 200); //显示 this.setVisible(true); //设置当关闭窗口时,jvm也关闭 this.setDefaultCloseOperation(this.EXIT_ON_CLOSE); jPanel = new JPanel(); label = new JLabel("helloWorld!"); //将组件添加到中间层组件。 jPanel.add(label); //将中间层组件设置为顶层组件的内容面板。 this.setContentPane(jPanel); } /** * @main */ public static void main(String[] args) { Swing swing = new Swing(); } }
布局管理器:
组件在容器中的位置和大小是由布局管理器来决定的,所有的组件都会使用一个布局管理器,通过它来自动进行布局管理。
java提供五种布局管理器:流式布局管理器(FlowLayout)、边界布局管理器(BorderLayout)、网格布局管理器(GridLayout)、卡片布局管理器(CardLayout)、网格包布局管理器(GridBagLayout)。
流式布局:按顺序从左到右,可指定对齐方式,左对齐右对齐居中对齐等。
边界布局:将容器简单的划分为东西南北中五个区域,中间区域最大,不是五个部分都必须添加。
网格布局:将容器划分为多列,组件被依次填充到每个网格中,从左上角开始。
JFrame、JDialog对话框组件你默认边界布局。
代码编写步骤:
1、继承JFrame
2、定义你需要的组件
3、创建组件(构造函数)
4、添加组件
5、对窗体进行设置
6、显示窗体
样例:
this.add(label1, BorderLayout.EAST); this.add(label2, BorderLayout.NORTH);
指定布局管理器:
jPanel.setLayout(new BorderLayout());
流式布局管理器:
jPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
拆分窗格:
JSplitPane jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jPanel,label1);