当前位置:
文档之家› JAVA第十章 图形用户界面(2)
JAVA第十章 图形用户界面(2)
17
5.2 添加组件 ——GUI程序编程步骤2
• JDK1.5 以前,Swing组件不能直接添加 到顶层容器(如JFrame)中,必须添加到 JFrame中一个叫做内容窗格(Content Pane)的对象中。 • 这种设计思想并不好,所以JDK1.5后可 以直接把Swing组件直接添加到顶层容 器中。
JScrollBar
JDialog AbstractButton JToggleButton JCheckBox JRadioButton JMenuItem JMenu JButton
4
• Swing中几乎所有组件都是从 JComponent衍生而来,也就是说这些 组件都是lightweight Component,均由 纯java所编写而成 。 • Swing中以下几个组件不是由 JComponent继承面来: • JFrame,JDialog,JWindow,JApplet • 以上四个组件是heavyweight Component
导入必要的包,一般还需导 入: import javax.swing.*; import java.awt.*; public class HelloSwing { import java.awt.event.*; 设置一个 public static void main(String[] args) { 顶级容器 JFrame frame = new JFrame("HelloSwing"); JLabel label = new JLabel("你好,Swing"); 创建一个 Swing组 frame.add(label); 件 将组件添加到 frame.setDefaultCloseOperation 顶层容器 (JFrame.EXIT_ON_CLOSE); frame.setSize(300,200); frame.setVisible(true); } } 实现了在单击“关闭”按钮 时, 可以关闭窗口
5.3 布局管理 ——GUI程序编程步骤3
• 布局管理器
–使用不同的布局管理器,组件的大小,形 状和位臵将大不相同。
26
• JApplet
–是使得Java Applet能够使用Swing组
件的类,它继承了java. applet.
Applet。
27
–使用布局管理器可以更容易地进行布局, 缺点是布局被限定了,所以实际开发中, 最快的方法还是自己指定具体组件的位臵。 –使用方法是通过调用容器中的setLayout方 法,通过它来选择不同的布局管理器,即 以某种布局管理器对象为参数,例如: Container contentPane = frame.getContentPane(); contentPane.setLayout(new FlowLayout());
•
• JWindow:是一个空窗口,没有边框,一般 不直接使用JWindow。
9
• 中间层容器
–其存在的目的仅仅是为了容纳别 的组件。 –好的编程风格是:不要直接向 Swing顶层容器添加组件。 –应该把组件先放在中间容器里, 然后再添加到顶层容器。
10
• JPanel:最灵活、最常用的中间容器。 • JScrollPane:与 JPanel 类似,但还可在大的 组件或可扩展组件周围提供滚动条。 • JTabbedPane:包含多个组件,但一次只显示 一个组件。用户可在组件之间方便地切换。 • JToolBar:按行或列排列一组组件(通常是按 钮)。 • JSplitPane:分隔面板,一次可将两个组件同
24
其他顶层容器
• JDialog
–JDialog类主要用来创建根据需要而定制的对话框, 与JFrame有一些相似,但它一般是一个临时的窗 口,主要用于显示提示信息或接受用户输入。所 以,在对话框中一般不需要菜单条,也不需要改 变窗口大小。例JDialogDemo.java –Swing提供了JOptionPane这个标准对话框的类也 满足对话框的需求。
第10章
图形用户界面(2)
1
4、Swing的组Байду номын сангаас与容器
• Swing类从AWT类派生出来。 • Swing组件类大部分都以 J 开头。 • Swing类与用AWT编写的程序兼 容。它的组件是AWT的两倍, 大约有40多个。
2
Java.awt类集
ng.Object
Event Font Button Checkbox Graphics Color Graphics Cardlayout Container Window Frame Dialog Panel Applet
5
• Swing中的JFrame便继承原有AWT 中的Frame类,而不是继承 JComponent类。同样,JApplet是 继承原有AWT中的JApplet类,也 不是继承JComponent类。
6
4.1 Swing组件层次
• 通常将javax.swing包里的Swing 组件归为三个层次
–顶层容器 –中间层容器 –原子组件 • 注:容器(container)实际上是含 有若干组件或其他容器的屏幕窗口。
4.2
顶级容 器 JToolBar组件
Swing GUI框架
JScrollPane 组件
JTabbedPane 组件
13
5、Swing GUI 程序
• 要创建一个图形用户界面,首先需要创建一 个特殊的窗口来容纳用户界面组件。 1、Java语言中,这个特殊的窗口一般是一个应 用程序框架或applet。即选定顶层容器,如 JFrame, JApplet, JDialog,JWindow等。 2、然后在这个窗口里:
7
• 顶层容器
–每个使用Swing组件的Java程序 都必须至少有一个顶层容器,别 的组件都必须放在这个顶层容器 上才能显现出来 –Swing提供四个顶层容器的类
8
JFrame:用于框架窗口的类,此窗口带 有边框、标题、用于关闭和最小化窗口 的图标等。带 GUI 的应用程序通常至少 使用一个框架窗口。 • JDialog:用于对话框的类。 • JApplet:用于使用 Swing 组件的 Java Applet 的类。
• JOptionPane类创建的对话框主要包含4种类 型:消息对话框、输入对话框、确认对话框 和选项对话框,都是模式对话框。 • 例:MyJOptionPane.java
25
• 如何将下级组件有秩序地摆在上一级容 器中
方法1:在程序中具体指定每个组件的位臵
方法2:使用布局管理器(Interface LayoutManager),布局管理器根据组件 加入的顺序决定其位臵。
28
• 在Java中有很多实现LayoutManager接 口的类,经常用到的有以下几个
–BorderLayout –FlowLayout –GridLayout –CardLayout –GridBagLayout –BoxLayout –SpringLayout
29
– void setContentPane(Container contentPane) – void setSize(int width, int height)
– void setLocation(int x, int y)
– void setBounds(int x, int y, int width, int height) – void setVisible(boolean b)
20
例:FrameWithButton1.java,
21
JDK1.5以前的添加组件规则
用getContentPane方法获得JFrame的内容 窗格,再对其加入组件: frame.getContentPane.add(childCompo nent); • 添加按钮(Button)
–直接调用add(), JButton b=new JButton(―Click me"); contentPane.add(button);
3
Menu
ponent List …
Swing 结构
Object
Component
Container JText JComboBox JLabel JList JMenuBar Window Frame JFrame Dialog JComponent JOptionPane JPanel
时显示在两个显示区中,若需要同时在多个
显示区中显示组件,可以同时使用多个
JSplitPane组件来实现。
11
• 原子组件
–通常是在图形用户界面中和用户进行交互的组件 –基本功能是和用户交互信息,而不像前两种组件 那样是用来容纳别的组件的 –根据功能的不同,可被分为三类 • 显示不可编辑信息的JLabel、JProgressBar、 JToolTip • 有控制功能、可以用来输入信息的JButton、 JCheckBox、JRadioButton、JComboBox、 JList、JMenu、JSlider、JSpinner、 JTexComponent等 • 能提供格式化的信息并允许用户选择的 JColorChooser、JFileChooser、JTable、JTree 12
18
添加组件规则
1)方法1:直接把组件加在顶层容器 中 • JFrame frame=new JFrame("将一 个按钮添加到框架中"); • JButton b=new JButton("按钮");// 创建一个按钮 • frame.add(b);//将按钮添加到框架 中
19
基本的 Swing 应用程序
15
5.1 创建应用程序框架
——GUI程序编程步骤1
• 首先创建一个应用程序窗口可供放 臵组件。如:JFrame,JDialog, JApplet… • JFrame的构造方法: