Java程序设计 第12章 图形用户界面设计入门
学习目标 了解Java GUI API的层次结构 掌握JFrame、JPanel和简单GUI组件的使用 理解布局管理器的作用 掌握FlowLayout、GridLayout和BorderLayout 掌握将JPanel作为子容器使用 了解Color、Font、FontMetrics类
创建GUI对象 Example:TestGUI.java // 创建按钮 JButton jbtOK = new JButton("OK"); // 创建标签 JLabel jlblName = new JLabel("Enter your name: "); // 创建文本框 JTextField jtfName = new JTextField("Type Name Here"); // 创建复选框 JCheckBox jchkBold = new JCheckBox("Bold"); // 创建单选按钮 JRadioButton jrbRed = new JRadioButton("Red"); // 创建组合框 JComboBox jcboColor = new JComboBox(new String[] { "Red", "Green", "Blue" }); 按钮 标签 文本框 复选框 单选按钮 组合框 Example:TestGUI.java
Swing与AWT Swing组件都是以J开头,例如使用JButton而不是采用简单形式Button。原因是java.awt包中已定义了Button。 Java最初开发时,其GUI组件都放在称为Abstract Windows Toolkit(AWT)的类库中。当Java在不同平台上运行时,AWT组件通过一个代理映射到平台组件。AWT只适用于开发简单的图形程序,而且对平台的依赖性很强。 Java 2发布时,提供了一套更稳定、多样和灵活的组件库,称为Swing。Swing组件直接使用Java代码绘制界面,对平台的依赖性很小。
GUI类结构 * 1 java.awt javax.swing Object Dimension Font FontMetrics Color Graphics Component 1 LayoutManager Container Panel Window 轻量级组件 JComponent Applet Frame Dialog JPanel java.awt javax.swing 重量级组件 JApplet JFrame JDialog
Swing GUI组件 JCheckBoxMenuItem JMenuItem JMenu AbstractButton JButton JToggleButton JRadioButton JEditorPane JTextComponent JTextField JPasswordField JComponent JTextArea JLabel JList JComboBox JPanel JOptionPane JScrollBar JRootPane JTabbedPane JSplitPane JLayeredPane JScrollPane JSlider JSeperator JToolbar JMenubar JPopupMenu JTooltip JFileChooser JColorChooser JTree JTable JTableHeader JInternalFrame JPrograssBar JSpinner
框架 框架(JFrame)是一个窗口,不能包含在其它窗口中。框架用于包含其它的用户界面组件。 Example:MyFrame.java
添加控件 可以向JFrame的内容面板(content pane)中添加控件。 Example:MyFrameWithComponents.java
布局管理器 布局管理器(layout manager)用于控制容器中控件的位置和大小。 设置容器的布局管理器 container.setLayout(new SpecificLayout()); 向容器中添加控件 JButton jbOK = new JButton(“OK”); container.add(jbOK); 从容器中删除控件 container.remove(jbOK);
FlowLayout public FlowLayout(int alignment, int hGap, int vGap)
例 测试FlowLayout 使用FlowLayout, 创建包含3个标签和3个文本框的窗口。 Example:ShowFlowLayout.java
GridLayout public GridLayout(int rows, int columns, int hGap, int vGap) 指定行数和列数,以及控件间水平间距和垂直间距 public GridLayout(int rows, int columns) 指定行数和列数,控件间水平和垂直间距为0 public GridLayout() 指定行数和列数为1,控件间水平和垂直间距为0 行数和列数可以为0,但不能都为0。不为0的维数固定,为0的维数由布局管理器动态确定。如果行数和列数都不为0,行数固定,布局管理器动态确定列数。
例 测试GridLayout 使用GirdLayout, 创建包含3个标签和3个文本框的窗口。 Example:ShowGridLayout.java
BorderLayout BorderLayout将容器划分为:东、西、南、北、中。 通过使用容器的add(component, index)将控件添加到容器。index的取值: BorderLayout.EAST BorderLayout.SOUTH BorderLayout.WEST BorderLayout.NORTH BorderLayout.CENTER Example:ShowBorderLayout.java
BorderLayout构造函数 public BorderLayout(int hGap, int vGap)
使用面板作为子容器 面板(panel)通常用作子容器,对界面控件进行分组。可以将控件放在面板内,再将该面板添加到框架。 可以使用new JPanel()创建一个面板,JPanel的缺省布局管理器是FlowLayout。 可以使用new JPanel(LayoutManager)创建一个指定布局管理器的面板。 使用JPanel.add(component)方法向面板添加控件。
例 测试面板 编写程序,使用面板组织控件。程序为微波炉创建用户界面。 Example:TestPanels.java BorderLayout GridLayout BorderLayout Example:TestPanels.java
Color 创建颜色 可以使用java.awt.Color类为GUI组件设置颜色。 颜色由红、绿、蓝3种元素组成,每种元素从0(最少)到255(最多)的字节值表示,这种模型称为RGB模式。 创建颜色 Color c = new Color(r, g, b); 例如: Color c = new Color(228, 100, 255);
标准颜色 java.awt.Color中定义了13种标准颜色,以常量表示: black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellow 上面的常量命名不符合Java命名标准,因些JDK1.4以后可以使用新的常量: BLACK, BLUE, CYAN, DARK_GRAY, GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE, YELLOW
设置颜色 可以使用组件的方法设置颜色 setBackground(Color c) setForeground(Color c) 例如 jbt.setBackground(Color.yellow); jbt.setForeground(Color.red);
Font java.awt.Font表示字体。 创建字体 Font myFont = new Font(name, style, size); 例如 Font myFont = new Font("SansSerif ", Font.BOLD, 16); Font myFont = new Font("Serif", Font.BOLD+Font.ITALIC, 12); JButton jbtOK = new JButton("OK“); jbtOK.setFont(myFont);
Swing GUI组件的通用属性 Java.awt.Component java.awt.Container int x, y, width, height; Color forground, background; Font font; boolean visible, enabled; java.awt.Container LayoutManager layout; add, remove, paintComponent javax.swing.Jcomponent String toolTipText; Border border;
例 测试GUI常用属性 创建三个按钮和两个标签。左边按钮设置为白色背景,中间按钮设置为绿色文本,右边按钮设置提示文本。左边标签为红色文本,右边标签为橙色文本。面板设置为标题边框,标签设置为线边框。 Example:TestSwingCommonFeatures.java
ImageIcon 类javax.swing.ImageIcon表示图标。图标是大小固定的图片,用于装饰组件。 创建图标 ImageIcon icon = new ImageIcon(“image/us.gif”); 图标文件支持:gif,jpeg和png三种格式。
例 测试ImageIcon 在标签和按钮上显示图片 Example:TestImageIcon.java