📄 s01.htm
字号:
<i>JOptionPane</i> 显示标准的对话框,如:消息和问题对话框<br> <i>JPanel</i> 通用容器,它是AWT面板和画布组件的替代组件<br> JPasswordfield JTextField的扩展,使输入的字符不可见<br> <i>JPopupMenu</i> 弹出式菜单,它是AWT弹出式菜单组件的替代组件<br> JProgressBar 进度指示器<br> <i>JRadioButton</i> 单选按钮,它是AWT复选框组件的替代组件<br> JRootPane 顶层容器,它包含一个玻璃窗格,一个层窗格,一个内容窗格和一个可选的菜单条<br> <i>JScrollBar</i> 滚动条,它是AWT滚动条组件的替代组件<br> <i>JScrollPane</i> 滚动窗格,它是AWT滚动窗格组件的替代组件<br> JSeparator 水平或垂直分隔条<br> JSlider 滑杆<br> JSplitPane 有两个分隔区的容器,这两个分隔区可以水平排列或者垂直排列且分隔区的大小能自动调整<br> JTabbedPane 带选项卡的窗格<br> JTable 表格<br> JTableHeader 表格头<br> <i>JTextArea</i> 用于输入多行文本的文本域,它是AWT文本域组件的替代组件<br> <i>JTestComponent</i> 文本组件的基类,它替代AWT的TextComponent类<br> <i>JTextField</i> 单行文本域,它替代AWT的单行文本域组件<br> <i>JTextPane</i> 简单的文本编辑器<br> JToggleButton 两种状态的按钮,它是JCheckBox和JRadioButton组件的基类<br> JToolBar 工具条<br> JToolTip 当光标停留在一个组件上时,该组件上显示的一行文字<br> JTree 用于按钮层次组织数据的结构控件<br> JViesport 用于浏览可滚动组件的视口<br> <i>JWindow</i> 外部窗口,它是java.awt.Window的扩展<br> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<br> 注:斜体字表示的是AWT的替代组件</p> <p> <b>插入式界面模式</b></p> <p> Swing支持插入式界面样式,界面模式的基础是“模型-视图-控制器”体系结构的变体。图1-3图解说明了在不同的界面样式下运行的小应用程序。<br> 修改小应用程序或应用程序的界面样式不需要修改程序代码,通过把$ JDK_HOME/lib目录下的swing.properties文件中的swing.defaultlaf属性设置为所需要的界面样式类型,就可以在运行时刻设置缺省的界面样式。下面是swing.properties文件的一个例子,它通过指定defaultlaf属性来设置缺省的界面样式:<br> # swing.properties example file. Lines that begin with '#' are<br> # comments.<br> # The Mac look and feel is specifed as the default look and<br> # feel below. If no look and feel is specifed.then the default<br> # look and feel (metal) is used.<br> # the next line specifies which look and feels are installed.<br> swing.installedlafts=metal,motif,windows,mac<br> # default set to Mac look and feel<br> swing.defaultlaf=javax.swing.plaf.mac.MacLookAndFeel<br> # swing.defaultlaf=javax.swing.plaf.windows.WindowsLookAndFeel<br> # swing.defaultlaf=javax.swing.plaf.motif.MotifLookAndFeel<br> 在第7章“插入式界面样式”中介绍了插入式界面样式的Swing实现。</p> <p><b> <a name="1.5"></a>1.5 Swing包概览</b></p> <p> Swing由许多包组成,表1-2中列出了这些包</p> <p> <b>表1-2 Swing包</b><br> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<br> <b>包 描述 </b><br> ─────────────────────────────────<br> com.sun.java.swing.plaf.motif 用户界面代表类,它们实现Motif界面样式<br> com.sun.java.swing.plaf.windows 用户界面代表类,它们实现Windows界面样式<br> javax.swing Swing组件和实用工具<br> javax.swing.border Swing轻量组件的边框<br> javax.swing.colorchooser JColorChooser的支持类/接口<br> javax.swing.event 事件和侦听器类<br> javax.swing.filechooser JFileChooser的支持类/接口<br> javax.swing.pending 未完全实现的Swing组件<br> javax.swing.plaf 抽象类,它定义UI代表的行为<br> javax.swing.plaf.basic 实现所有标准界面样式公共功能的基类<br> javax.swing.plaf.metal 用户界面代表类,它们实现Metal界面样式<br> javax.swing.table JTable组件的支持类<br> javax.swing.text 支持文档的显示和编辑<br> javax.swing.text.html 支持显示和编辑HTML文件<br> javax.swing.text.html.parser html文件的分析器类<br> javax.swing.text.rtf 支持显示和编辑RTF文件<br> javax.swing.tree JTree组件的支持类<br> javax.swing.undo 支持取消操作<br> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━<br> swing包是Swing提供的最大包,它包含将近100个类和25个接口。几乎所有的Swing组件都在swing包中,只有JTableHeader和JTextComponent是例外,它们分别在swing.table包和swing.text包中。<br> swing.border包中含有数个在轻量Swing组件的边衬中画边框的类。border包由一个Border接口、一个AbstractBorder类和AbstractBorder的许多具体扩展组成。<br> swing.event包中定义了事件和事件监听器类,swing.event包与AWT的event包类似。awt.event和swing.event都包含事件类和监听器接口,它们分别响应由AWT组件和Swing组件激发的事件。例如,当在树组件中需要节点扩展(或折叠)的通知时,则要实现Swing的TreeExpansionListener接口,并把一个TreeExpansionEvent实例传送给TreeExpansionListener接口中定义的方法。TreeExpansionListener和TreeExpansionEvent都是在swing.event包中定义的。 <br> Swing.pending包包括仍没有完全实现的Swing组件。在Swing1.1 FCS中,pending包包含选择器(日期、货币选择器)计算器、弹出式按钮等等。pending包中的组件最终会放到swing包中。<br> 虽然Swing的表格组件(JTable)在swing包中,但它的支持类却在swing.table包中。表格模型、单元绘制器和编辑器等都在swing.table包中。<br> 与JTable类一样,Swing的树类JTree(用于按层次组织数据的结构组件)也在swing包中,而它的支持类却在swing.tree包中。swing.tree包提供树模型、树节点、树单元编辑器和绘制器等支持类。<br> Swing有四个用于显示和编辑文档的包:swing.text、swing.text.html、swing.text.html.parser和swing.text.rtf。swing.text包为Swing的文档模型提供了所有必须的下层构件。包括用于文档、元素、加字符、增亮、编辑工具包等的类和接口。swing.text.html和swing.text.rtf包是Swing最小的两个包:它们分别提供用于实现HTML(超文本标记语言)和rtf(多文本格式)文档编辑器的编辑器工具包。swing.text.html.parser包中含有分析html文件的支持类。 <br> Swing.undo包为实现取消操作提供支持。<br> swing.plaf包中的类形成了Swing插入式界面样式的UI代表部分的基础。UI代表为它们的相关组件实现界面模式。<br> swing.plaf包中的大多数类定义UI资源或扩展swing.ComponentUI类。swing.ComponentUI类定义所有UI代表的公共行为。在swing.plaf包中的UI代表类(即名字以UI结尾的类)通常为特定的组件定义附加的抽象方法。例如,swing.plaf.ButtonUI类扩展swing.ComponentUI类并添加了抽象方法getDefaultMargin(),该方法返回按钮边框与按钮内容之间的间距。<br> swing.plaf.basic包扩展在swing.plaf包中定义的类,并且实现所有标准Swing界面样式共有的特性。例如:swing.plaf.basic.BasicButtonUI类提供了swing.ComponentUI类和swing.plaf.ButtonUI类定义的一些方法的缺省实现。BasicButtonUI类还为paint等方法提供了多个不同的实现(paint方法绘制按钮的文本和图标)。BasicButtonUI还以无操作形式实现其他与界面样式有关的方法,如paintButtonPressed()方法。这些方法将被特定的界面样式扩展所重载。<br> metal和motif包实现相应界面样式的UI代表类。通常,UI代表类扩展swing.plaf.basic包中的类。例如,metal.ButtonUI类重载swing.plaf.basic.ButtonUI类中的paintButtonPressed方法的无操作实现。<br> Swing.plaf.multi包支持界面样式复用。界面样式复用允许多个UI代表与一个组件相关联。例如。一个按钮UI代表可能同时与一个视觉UI代表和一个音频UI代表相关联,这样,当这个按钮被激活时,不难能产生可视的反馈信息,还能播放一个声音。UI复用的主要用途是使组件更具可访问性。<br> Swing还提供了其他两种界面样式实现,即mactintosh和Organic的界面样式。 </p> <p><b> <a name="1.6"></a>1.6 Swing与AWT</b></p> <p> 对Swing最普遍的错误概念是认为其设计目的是用来替代AWT的。事实上,Swing建立在AWT之上,如图1-4所示。<br> ┌─────────┬──────────┐<br> │Swing重量组件│ Swing轻量组件│ <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -