Chapter7图形用户界面程序设计入门 学习目标: ■浏览简单的GUI组件 了解] ava gUi api层次结构 ■使用框架、面板和简单的GUI组件创建用户界面 ■理解布局管理器的作用 使用 Flow Layout、 Gridlayout、 Border Layout、 CardLayout BoXLayout和nu山布局在容器中设置组件的布局 使用 Color类和Font类指定颜色和字体 使用m).下了 使用 Graphics类中的绘图方法绘制字符串、直线、矩形、椭圆、 弧形、多边形等基本图形 使用 FontMetrics类居中显示字符串 创建一个在面板上显示信息的可复用组件 MessagePanel
Chapter 7 图形用户界面程序设计入门 ◼ 学习目标: ◼ 浏览简单的GUI组件 ◼ 了解Java GUI API层次结构 ◼ 使用框架、面板和简单的GUI组件创建用户界面 ◼ 理解布局管理器的作用 ◼ 使用FlowLayout、GridLayout、BorderLayout、CardLayout、 BoxLayout和null布局在容器中设置组件的布局 ◼ 使用Color类和Font类指定颜色和字体 ◼ 使用JPanels类来创建子容器 ◼ 使用paintComponent方法在面板上画图 ◼ 使用Graphics类中的绘图方法绘制字符串、直线、矩形、椭圆、 弧形、多边形等基本图形 ◼ 使用FontMetrics类居中显示字符串 ◼ 创建一个在面板上显示信息的可复用组件MessagePanel
引 到目前为止,我们只能使用对话框和命令窗口 来进行输入输出。这些做法不仅具有局限性, 而且很不方便。例如,要读入十个数字,必须 打开十个输入对话框。 从本章开始,将学习ava图形用户界面程序设 计。可以创建个性化的图形用户界面(GUI), 在同一用户界面上,既可以读取输入,又可以 显示输出 本章介绍 Java gu程序设计基础。具体讨论 GUI组件以及它们的关系,介绍容器和布局管 理器、颜色、字体、以及几何图形的绘制等
引言 ◼ 到目前为止,我们只能使用对话框和命令窗口 来进行输入输出。这些做法不仅具有局限性, 而且很不方便。例如,要读入十个数字,必须 打开十个输入对话框。 ◼ 从本章开始,将学习Java图形用户界面程序设 计。可以创建个性化的图形用户界面(GUI), 在同一用户界面上,既可以读取输入,又可以 显示输出。 ◼ 本章介绍Java GUI程序设计基础。具体讨论 GUI组件以及它们的关系,介绍容器和布局管 理器、颜色、字体、以及几何图形的绘制等
创建GUI对象 / Create a button with text OK JButton jbtok new JButton("OK") // Create a label with text "Enter your name: JLabel jlbIName new JLabel("Enter your name: )i abel Text Check Rad field Button Display GUI Components Button OK Enter your name: Type Name Here [ Bold O Red Red Green // Create a text field with text "Type Name Here JTextField jtfName new JTextField("Type Name Combo Here") / Create a check box with text bold CHeckbOx jchkBold new CHeckbOx("bold" )i / Create a radio button with text red JRadioButton jrbRed new RAdiobUtton("red")i // Create a combo box with choices red, green, and blue JComboBox icbocolor new JComboBox(new string []f"Red Green""Blue")
// Create a button with text OK 创建GUI对象 JButton jbtOK = new JButton("OK"); // Create a label with text "Enter your name: " JLabel jlblName = new JLabel("Enter your name: "); // Create a text field with text "Type Name Here" JTextField jtfName = new JTextField("Type Name Here"); // Create a check box with text bold JCheckBox jchkBold = new JCheckBox("Bold"); // Create a radio button with text red JRadioButton jrbRed = new JRadioButton("Red"); // Create a combo box with choices red, green, and blue JComboBox jcboColor = new JComboBox(new String[]{"Red", "Green", "Blue"}); Button Label Text field Check Box Radio Button Combo Box
Swing vs AWT 为什么GU组件的类名都有前缀]呢? n刚引入Java的时候,图形组件存放在称为抽象窗口工具集 ( Abstract Window Toolkit,AWT)的库中。对Java运行的每 个平台,AWT组件通过它们各自的代理映射成平台特性的组件, 这些代理称为同位体,即需要调用操作系统提供的组件来完成工 作。这样会带来组件外观在不同的操作系统上可能有所不同,而 且也无法在Java程序中调整组件的属性等很多不足。 为了让用java创建的图形界面也能够跨平台,即在不同操作系统 中保持相同的外观,从JDK1.2版本开始引入 Swing组件,这些 Swing 组件位于 Javax. swing包中,成为JDK基础类库的一部分大多数 Swing组件是用纯Java语言编写而成的除了 java. awt. Window或 java. awt. Panel子类的组件外,不依赖本地操作系统的GUIr Swing组件可以跨平台运行独立于本地平台的 Swing组件被称为 轻量级组件而依赖于本地平台的AWT组件被称为重量级组件 为了区别 Swing组件类和AWT组件, Swing gui组件类的开头都 有前缀字母]。尽管]ava2仍然支持AWT组件,但是最好学习使 用 Swing组件编程,因为AWT组件终究要退出舞台
Swing vs. AWT ◼为什么GUI组件的类名都有前缀J呢? ◼刚引入Java的时候,图形组件存放在称为抽象窗口工具集 (Abstract Window Toolkit, AWT)的库中。对Java运行的每一 个平台,AWT组件通过它们各自的代理映射成平台特性的组件, 这些代理称为同位体,即需要调用操作系统提供的组件来完成工 作。这样会带来组件外观在不同的操作系统上可能有所不同,而 且也无法在Java程序中调整组件的属性等很多不足。 ◼为了让用java创建的图形界面也能够跨平台,即在不同操作系统 中保持相同的外观,从JDK1.2版本开始引入Swing组件,这些Swing 组件位于javax.swing包中,成为JDK基础类库的一部分 .大多数 Swing组件是用纯Java语言编写而成的,除了 java.awt.Window 或 java.awt.Panel 子类的组件外,不依赖本地操作系统的GUI, Swing组件可以跨平台运行.独立于本地平台的Swing组件被称为 轻量级组件,而依赖于本地平台的AWT组件被称为重量级组件. ◼为了区别Swing组件类和AWT组件,Swing GUI组件类的开头都 有前缀字母J。尽管Java 2仍然支持AWT组件,但是最好学习使 用Swing组件编程,因为AWT组件终究要退出舞台
GUI类层次结构图 Dimension Classes in the java.awt Layout manage Font Fontmetrics Object Color 匚Pa-K[ Applet Khi JApplet Graphics Component Container K Window KI Frame Jframe Dialog Kh JDialog JComponent in the javax. swing package
GUI 类层次结构图 Dimension Font FontMetrics Component Graphics Object Color Container Panel Applet Frame Dialog Window JComponent JApplet JFrame JDialog Swing Components in the javax.swing package Lightweight Heavyweight Classes in the java.awt package 1 LayoutManager *
容器类 GUI类可分成三组:容器类( container)、辅助类( helper)和 组件类( component) Dimension Classes in the java. awt Layout manager Font Font Metrics Object Color Panel Applet JApplet Graphics Component Container Window Frame KI JFrame Dialog Dial Swing Components 容器类能用来包含其他组件 COmponen JPanel the javax. swing package
容器类 Dimension Font FontMetrics Component Graphics Object Color Container Panel Applet Frame Dialog Window JComponent JApplet JFrame JDialog Swing Components in the javax.swing package Lightweight Heavyweight Classes in the java.awt package 1 LayoutManager * JPanel 容器类能用来包含其他组件 GUI类可分成三组:容器类(container)、辅助类(helper)和 组件类(component)
GUI辅助类 Dimension Classes in the java. awt Layout Manager heavyweight Font FontMetrics O Color 匚 Panel[Apk{ Japplet Graphi I Component K Container Window K Frame Jframe Dialog JDialog 辅助类不是 Component类的 opponet ar Swing Components in the javax. swing package 子类,它们用来描述GU组 件的属性,如图形环境、颜 色、字体以及大小 Lightweight
GUI 辅助类 Dimension Font FontMetrics Component Graphics Object Color Container Panel Applet Frame Dialog Window JComponent JApplet JFrame JDialog Swing Components in the javax.swing package Lightweight Heavyweight Classes in the java.awt package 1 LayoutManager * 辅助类不是 JPanel Component类的 子类,它们用来描述GUI组 件的属性,如图形环境、颜 色、字体以及大小
Swing gui组件 J Check BoxMenultem JMenultem KHJMenu abstract Butto Button J Radio Button Menuitem JToggleButton KhTICheckBox. JRadioButton Component JEditorPane] JTex Component KH JText Fiels画swde TextArea JLabel DList COmbo Box] JPanel JOptionPane] [ScrollBar JSlider] JTabbedPaneJSplitPanejLayeredPane SEparator[JScrollPane jRootPane Tool Bar JM menuBar PC opupMenu ile choose JColorChooser Tool JT JTable JTableheade Internal[ B Spinner
Swing GUI 组件 JMenuItem JCheckBoxMenuItem AbstractButton JComponent JMenu JRadioButtonMenuItem JToggleButton JCheckBox JRadioButton JComboBox JInternalFrame JLayeredPane JList JMenuBar JOptionPane JPopupMenu JProgressBar JFileChooser JScrollBar JSeparator JScrollPane JSplitPane JSlider JTabbedPane JTable JTableHeader JTextComponent JTextField JTextArea JToolBar JToolTip JTree JRootPane JPanel JPasswordField JColorChooser JLabel JEditorPane JSpinner JButton
AWT(Optional) AWTEvent Container Panel Applet Font Butto on window Kh Fr rame Fontmetrics Dialog KH FileDialog Text Field Obje Color c下 Textcomponer TextAre Graphics List Co Choice CheckBox Check BoxGroup Canvas Menu component Menuitem Menu Menu Bar Scrollbar
AWT (Optional) AWTEvent Font FontMetrics Component Graphics Object Color Canvas Button TextComponent Label List CheckBoxGroup CheckBox Choice Container Panel Applet Frame Dialog FileDialog Window TextField TextArea MenuComponent MenuItem MenuBar Menu Scrollbar LayoutManager
框架 Frames 要创建一个用户界面,需要创建一个框架或 applet来存放用户界面组件。 applet,后面章节 会读到,本章节介绍创建框架的过程
框架Frames ◼ 要创建一个用户界面,需要创建一个框架或 applet来存放用户界面组件。applet后面章节 会读到,本章节介绍创建框架的过程