Swing组件及应用
- 格式:doc
- 大小:2.92 MB
- 文档页数:92
第 1 页 共 2 页 swing的优秀项目 【原创实用版】 目录 1.Swing 的背景和定义 2.Swing 的优秀项目 3.Swing 项目在实际应用中的优势 4.Swing 的未来发展前景 正文 Swing 是一个开源的 Java 库,它提供了一套丰富的 UI 组件,可以让 Java 开发人员轻松地创建具有良好用户体验的图形用户界面。Swing 的优秀项目在许多领域都有广泛的应用,如桌面应用程序、网络应用程序、嵌入式系统等。
Swing 的背景和定义 Swing 是 Java 的一个核心库,它提供了一组用于创建图形用户界面(GUI)的组件。Swing 是 Java AWT(Abstract Window Toolkit)的扩展,它提供了更丰富的 UI 组件和更好的性能。Swing 的优秀项目使得 Java 开发人员可以轻松地创建具有良好用户体验的桌面应用程序和网络应用程序。
Swing 的优秀项目 Swing 的优秀项目包括许多常用的 UI 组件,如 JFrame、JPanel、JLabel、JButton、JTextField 等。这些组件具有很好的可定制性和良好的用户界面设计,使得 Java 开发人员可以轻松地创建具有良好用户体验的应用程序。
Swing 项目在实际应用中的优势 Swing 的优秀项目在实际应用中具有许多优势,如下所述: 第 2 页 共 2 页
1.丰富的 UI 组件:Swing 提供了丰富的 UI 组件,可以满足各种不同类型的应用程序的需求。
2.良好的用户界面设计:Swing 的 UI 组件具有现代、简洁、直观的用户界面设计,可以提高用户的满意度。
3.可定制性强:Swing 的 UI 组件可以根据用户的需求进行自定义,如更改颜色、字体、大小等。
4.跨平台性:Swing 的优秀项目可以在多种不同的操作系统和硬件平台上运行,如 Windows、Linux、Mac 等。
swing 框架之Render(一)swing 框架之Render(一)Swing组件根据其所操作的数据类型分为两种,一种是标量数据类型的组件,一类是复合数据类型的组件。
标量数据类型的组件操作的是基本类型的数据,如字符串、布尔、数字等,此类型组件包括JTextField、JCheckBox、JLabel、JButton等。
复合数据类型的组件操作的是诸如向量、矩形和非线形等类型的数据。
向量数据类型的组件有JComboBox、JList,矩形数据类型的组件有JTable,非线形数据类型的组件如JTree。
为更形象地展现各种类型的数据,复合数据类型的组件往往采用标量数据类型组件来表现每种数据元素。
比如JTable的某一列数据是字符串类型,那么该列的单元格往往用JLabel方式展现每个字符串;如果一列数据是布尔类型,那么该列的单元格往往用JCheckBox方式展现每个布尔值。
如何实现复合数据类型的组件的渲染呢?最直接的是在paint方法中一个一个地根据数据类型画出每一个组件,但这种方法很显然代码复用率很低,大量重复了相应标量型组件的代码,代码的维护和同步会非常困难,也不容易实现皮肤切换。
为解决此问题,Swing 体系中提出了所谓渲染器(Renderer)的概念,其核心思想是使用接口,封装和复用已有标量型组件的渲染代码,降低代码重复率,提高组件的可扩展性。
渲染器是如何工作的呢?我们以JTable的渲染代码来演示渲染器的工作原理。
下面代码是从JTable的UI类javax.swing.plaf.basic.BasicTableUI中摘出的部分代码(JDK 6)://注:为清晰期间,只显示了关键代码public void paint(Graphics g, JComponent c) {......//计算当前可显示区域的行列范围......// 画出表格的分割线paintGrid(g, rMin, rMax, cMin, cMax);// 画出表格单元格的内容paintCells(g, rMin, rMax, cMin, cMax);//如果正在拖动列,画出正在被拖动的线paintDropLines(g);}paintCells实现所有单元格的渲染过程:private void paintCells(Graphics g, int rMin, int rMax, int cMin, int cMax) { ......for(int row = rMin; row <= rMax; row++) {cellRect = table.getCellRect(row, cMin, false);for(int column = cMin; column <= cMax; column++) {//遍历表格的每一个单元格.......paintCell(g, cellRect, row, column);cellRect.x += columnWidth;}}......}渲染单元格的方法paintCell的实现:private void paintCell(Graphics g, Rectangle cellRect, int row, int column) { if (如果当前格是正在编辑的) {//重新设置编辑器的边框......}else {//获取当前格的渲染器TableCellRenderer renderer = table.getCellRenderer(row, column);//配置当前的渲染器Component component = table.prepareRenderer(renderer, row, column);//使用渲染器来渲染当前表格rendererPane.paintComponent(g, component, table, cellRect.x, cellRect.y,cellRect.width, cellRect.height, true);}}public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {Object value = getValueAt(row, column);......//调用渲染器的配置方法配置并获取合适的渲染组件return renderer.getTableCellRendererComponent(this, value, isSelected, hasFocus,row, column);}如何使用渲染器返回的组件渲染当前的单元格呢?JTable在自己内部隐藏了一个所谓的CellRendererPane组件,该组件是一个“零实现”的容器组件。
Java桌面应用程序的开发:Swing、SWT和JavaFX一、引言在计算机科学领域,Java 是一门非常流行的编程语言,被广泛应用于各个领域。
除了用于开发Web 应用程序和移动应用程序之外,Java 还被用于开发桌面应用程序。
本文将介绍Java 桌面应用程序开发的三种主要技术:Swing、SWT 和JavaFX。
二、SwingSwing 是Java 提供的一套UI 组件,用于开发桌面应用程序。
它是Java Foundation Classes(JFC)的一部分,提供了丰富的图形用户界面组件,如按钮、文本框、标签等。
Swing 的特点是跨平台,可以在不同的操作系统上运行,并且具有良好的可定制性。
Swing 的开发相对简单,只需要导入相应的包,创建组件并将其添加到容器中即可。
例如,可以使用JFrame 类创建一个窗口,并在窗口中添加按钮和标签。
同时,Swing 还提供了丰富的布局管理器,如BorderLayout、FlowLayout 和GridBagLayout,用于管理组件的排布和布局。
三、SWTSWT(Standard Widget Toolkit)是IBM 开发的一套用于创建桌面应用程序的Java 组件库。
与Swing 不同,SWT 是基于本地操作系统的本机窗口小部件(native widget)实现的,这意味着SWT 应用程序使用操作系统提供的原生控件,具有更好的性能和更好的外观。
要使用SWT 开发桌面应用程序,需要导入相应的SWT 包,并创建Display 和Shell 对象。
Display 对象表示应用程序的显示器,而Shell 对象则表示应用程序的窗口。
通过在Shell 对象中添加按钮、文本框和标签等控件,即可创建一个简单的SWT 程序。
与Swing 类似,SWT 也提供了布局管理器,如GridLayout 和FillLayout,用于管理控件的排布。
四、JavaFXJavaFX 是Oracle 开发的一套用于创建富客户端应用程序的框架。
swing应用在web中显示的技术原理Swing是Java的一个桌面GUI工具包,它提供了丰富的组件和布局管理器,用于构建桌面应用程序。
然而,Swing也可以用于Web开发,通过使用JavaWeb技术,如JavaServlet和JavaServerPages(JSP),将Swing应用程序嵌入到Web 页面中。
本文将介绍Swing应用在Web中显示的技术原理。
一、Swing与Web技术的结合Swing应用程序通常在桌面环境中运行,使用Java的AWT和Swing组件来构建图形用户界面。
然而,随着Web技术的发展,人们开始探索将桌面应用程序移植到Web平台上的可能性。
其中一种方法是将Swing应用程序转换为Web应用程序,即将Swing组件嵌入到Web页面中。
为了实现这一目标,需要使用JavaWeb技术,如JavaServlet和JSP。
Servlet是JavaWeb开发的核心技术之一,它是一种在服务器端运行的Java程序,用于处理客户端请求并返回响应。
JSP(JavaServerPages)则是Servlet的一种扩展,它允许在HTML页面中嵌入Java代码,以生成动态网页内容。
通过使用Servlet和JSP,可以将Swing应用程序的界面组件嵌入到Web页面中,从而实现在Web浏览器中显示Swing应用程序的效果。
二、Swing组件的Web化要将Swing组件嵌入到Web页面中,需要将Swing组件转换为适合在Web环境中使用的形式。
这通常涉及将Swing组件转换为HTML和CSS表示形式,并使用适当的JavaScript代码来控制组件的行为和交互。
例如,可以将Swing的按钮转换为HTML的<button>元素,并使用CSS来设置样式。
同样,可以将Swing的文本框转换为HTML的<input>元素,并使用JavaScript来处理输入数据。
通过这种方式,可以将Swing组件封装成可以在Web 页面中使用的组件,并使用JavaScript来控制它们的行为和交互。
编写swing程序的主要步骤好的,要使用 Java Swing 编写图形用户界面 (GUI) 应用程序,可以按照以下主要步骤进行操作:1. 设计用户界面:首先,需要使用 Swing 组件设计应用程序的用户界面。
这可以通过使用 Java 的可视化设计工具,如 NetBeans IDE 或 Eclipse IDE 中的 Swing 设计器来完成。
这些工具提供了一个图形化界面,可以通过拖放和调整组件的大小和位置来创建用户界面。
2. 创建组件:在设计用户界面后,可以使用 Java 代码创建这些组件。
这可以通过扩展 Swing 类并创建组件对象来完成。
例如,可以扩展 JFrame 类创建一个窗口,扩展JTextField 类创建一个文本框,扩展 JButton 类创建一个按钮等。
3. 设置组件属性:创建组件后,可以使用 Java 代码设置它们的属性,例如文本、颜色、大小、位置等。
这可以通过调用组件的相应方法来完成。
4. 添加事件监听器:为了使应用程序对用户的交互做出反应,需要为组件添加事件监听器。
例如,如果需要在按钮被点击时执行某个操作,可以为按钮添加一个ActionListener。
5. 组织组件层次结构:在 Swing 中,组件是按照层次结构组织的。
父组件可以包含子组件,子组件可以包含孙子组件等。
需要确保组件的层次结构正确,以便正确显示和处理事件。
6. 创建窗口:最后,需要创建一个包含所有组件的窗口。
这可以通过创建一个 JFrame 对象并将其设置为可见来完成。
7. 运行应用程序:完成应用程序的编写后,可以使用 Java 编译器将其编译为可执行文件,并在 Java 虚拟机上运行。
这是使用 Java Swing 编写应用程序的基本步骤。
需要注意的是,Swing 是一个庞大而复杂的 API,需要花费时间和精力来学习和掌握。
[编辑本段]简介Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。
工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event [编辑本段]创建图形界面步骤(1)导入Swing包(2)选择界面风格(3)设置顶层容器(4)设置按钮和标签(5)将组件放到容器上(6)为组件增加边框(7)处理事件(8)辅助技术支持导入Swing包下面语句导入Swing包import javax.swing.*;大部分Swing程序用到了AWT的基础底层结构和事件模型,因此需要导入两个包:import java.awt.*;import java.awt.event.*;如果图形界面中包括了事件处理,那么还需要导入事件处理包:import javax.swing.event.*;选择界面风格Swing允许选择程序的图形界面风格常用的有java风格,windows风格等下面的代码用于选择图形界面风格,这里选择的是跨平台的Java界面风格。
try { UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName( )); }catch (Exception e) { }设置顶层容器图形界面至少要有一个顶级Swing容器顶级Swing容器为其它Swing组件在屏幕上的绘制和处理事件提供支持常用的顶级容器:JFrame(框架):表示主程序窗口JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口JApplet(小程序):在浏览器内显示一个小程序界面一个框架包括边界、菜单栏、工具栏、状态栏,以及中间占主要部分的窗格窗格也可以看作是一种面板,但它是框架的一个组成部分组件不会直接放到框架上,而是放在若干个面板上,这些面板再放到窗格上用框架对象的getContentPane()函数来获得窗格,再调用窗格的add()函数放置面板public static void main(String[ ]args){JFrame frame=new JFrame("SwingAp plication");JPanel panel1=new JPanel();frame.getContentPane().add(panel1,BorderLayout.CENTER);......//添加其他组件frame.pack();frame.setVisible(true);}Swing全屏幕模式使用关键是java.awt.*里面的两个与显示设备有关的类:GraphicsEnvironment和Gr aphicsDevice。
在Java1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。
遗憾的是,AWT中的组件(例如按钮,类名为Button)在实现中使用了本地代码(Native Code),这些组件的创建和行为是由应用程序所在平台上的本地GUI工具来处理的。
因此,AWT组件要在不同的平台上提供给用户一致的行为就受到了很大的限制。
同时,AWT组件中还存在很多bug,这就使得使用AWT来开发跨平台的GUI应用程序困难重重。
1996年,SUN公司和Netsacpe公司在一个称为Swing的项目中合作完善了Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。
Swing组件和原来的AWT组件完全不同,最大的区别就是Swing组件的实现中没有使用本地代码,这样对底层平台的依赖型就大为降低,并且可以给不同平台的用户一致的感觉。
此外,和原来的AWT相比,Swing 中提供了内容更多、使用更为方便的组件。
在阅读一些书籍时,常会遇到名词JFC(Java Foundation Class)。
JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构建GUI的一组API。
实际上,Swing只是JFC的一部分,其它的还有二维图形(Java 2D)API以及拖放(Drag and Drop)API等等。
Swing并不是完全取代了AWT,Swing只是使用更好的GUI组件(如JButton)代替AWT 中相应的GUI组件(如Button),并且增加了一些AWT中原来所没有的GUI组件。
并且,Swing 仍使用AWT 1.1的事件处理模型。
虽然现在AWT组件仍得到支持,但是建议在你的应用程序中尽量使用Swing组件和1.1的事件模型。
1.标签(JLabel)标签(JLabel)通常是用来标识另外一个组件的含义。
以在标签上显示文字、图象或是文字图象的组合。
Swing学习笔记1-----Swing组件类的层次1. 从结构上划分Swing 组件类分为两种,⼀种是JComponent类,⼀种是Windows类.其中windows类包含的是⼀些可以独⽴显⽰的组件,⽽JComponent类包含的是不可以独⽴显⽰的组件.什么是可独⽴显⽰的组件和不可独⽴显⽰的组件?可独⽴显⽰的组件:当运⾏⼀个程序时,可独⽴显⽰的组件⽆需在其他组件上即可显⽰,即它可以直接显⽰出来,例如JFrame类.不可独⽴显⽰的组件:运⾏时,必须依靠可独⽴显⽰的组件才能将其显⽰出来,如JLabel类,JButton类,得托付在类似于JFrame类上才能显⽰出来.2.从功能上划分从功能上划分分为:顶层组件,中间组件和基本组件.顶层容器:JFrame,JDialog,JApplet,JWindow.所谓的顶层容器,也就是之前讲的Window组件,是可以独⽴显⽰的.中间容器:JPanel,JScrollPane,JSplitPane,JToolBar.所谓的中间容器也就是指那些可以充当载体但是不能独⽴显⽰的组件,就是⼀些基本组件可以依托在其中,但是也不能独⽴显⽰,必须依托在顶层容器中才⾏.特殊容器:在GUI上其特殊作⽤的中间层,如JInternalFrame,JLayeredPane,JRootPane.这⾥的特殊容器其实也是中间容器类的⼀种,只不过在图形上更加能够起到专业和美化的作⽤.基本组件:能起到⼈机交互的组件,如JButton,JLabel,JComboBox,JList,JMenu,JSlider,JTextField.注:要添加基本组件,⼀定要添加中间容器来承载.以下⽰例能很好的描述这个问题:public class Test {public static void main(String[] args) {JButton jButton = new JButton("test");}}这段代码运⾏后没有任何显⽰.再看这段代码public class Test {public static void main(String[] args) {JFrame jFrame = new JFrame("test");JButton jButton = new JButton("test");jButton.setSize(10,20);jFrame.add(jButton);jFrame.setSize(400,300);jFrame.setVisible(true);jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}}运⾏结果如图所⽰:尽管设置了jButton的⼤⼩为10,20.但是依然充满了整个Frame.为了实现jButton的⼤⼩为10,20,必须添加⼀个中间容器来承载才⾏.再看如下代码:public class Test {public static void main(String[] args) {JFrame jFrame = new JFrame("test");JButton jButton = new JButton("test");JPanel pane = new JPanel();jFrame.setContentPane(pane);jButton.setSize(10,20);jFrame.setSize(400, 300);pane.add(jButton);jFrame.setVisible(true);jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}}运⾏结果:这样就达到了我们的设计⽬的.。
swing名词解释
Swing 是一个广泛使用的名词,意思是“转变”、“动荡”或“波动”。
它通常用于描述一个系统、过程或决策的动态过程,其中存在反复的起伏和转折。
Swing 指的是一种基于组件的界面设计模式,它允许用户创建交互式组件,这些组件可以沿着水平或垂直方向移动和旋转,以响应用户的操作。
Swing 最初由 Oracle 公司开发,并在其数据库管理系统中得到了广泛应用。
Swing 还可以指代一种软件开发方法,它基于事件驱动和面向组件的设计原则。
这种方法允许开发人员将复杂的系统拆分为多个独立的组件,并通过事件和数据绑定来交互。
Swing 已经成为许多大型应用程序开发团队的首选方法,因为它可以提高开发效率和用户友好性。
除了用于系统或应用程序的设计外,Swing 还可以应用于其他领域。
例
如,Swing 可以用于游戏开发,因为它允许开发人员创建高度交互化的游戏体验。
Swing 还可以用于虚拟现实和增强现实开发,因为它允许开发人员创建具有交互性和可访问性的虚拟世界。
Swing 是一个广泛使用的名词,它涵盖了多个领域的应用,包括系统开发、应用程序开发、虚拟现实和增强现实开发等。
随着技术的不断进步,Swing 将继续在各个领域发挥重要作用。
1.1跟我学如何应用DJ Native Swing 组件实现在Java应用程序中嵌入浏览器1、应用DJ Native Swing 组件(/ns/index.html)组件可以支持Firefox浏览器2、代码示例import java.awt.BorderLayout;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.SwingUtilities;import mon.UIUtils;import chrriis.dj.nativeswing.swtimpl.NativeInterface;import ponents.JWebBrowser;public class EagleBrowser extends JPanel {private JPanel webBrowserPanel;private JWebBrowser webBrowser;private String url;public EagleBrowser(String url) {super(new BorderLayout());this.url = url;webBrowserPanel = new JPanel(new BorderLayout());webBrowser = new JWebBrowser();webBrowser.navigate(url);webBrowser.setButtonBarVisible(false);webBrowser.setMenuBarVisible(false);webBrowser.setBarsVisible(false);webBrowser.setStatusBarVisible(false);webBrowserPanel.add(webBrowser, BorderLayout.CENTER);add(webBrowserPanel, BorderLayout.CENTER);}public static void main(String[] args) {final String url = "http://";final String title = "电信营业厅缴费终端";UIUtils.setPreferredLookAndFeel();NativeInterface.open();SwingUtilities.invokeLater(new Runnable() {public void run() {JFrame frame = new JFrame(title);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().add(new EagleBrowser(url), BorderLayout.CENTER);frame.setExtendedState(JFrame.MAXIMIZED_BOTH);frame.setLocationByPlatform(true);//frame.setUndecorated(true);frame.setVisible(true);}});NativeInterface.runEventPump();}}3、主要的组件及功能(1)JWebBrowser1)Simple Example: This is a simple example that shows the basic configuration of anembedded web browser component.2)Setting Content: Set any HTML content to the web browser.3)Javascript Execution: Execute some Javascript code in the current web browser page.4)Navigation Control: Control the navigation happening in the web browser from the Javaapplication.5)This allows to block certain links and/or the creation of new windows, or to open linksand/or new windows elsewhere.6)Sending Commands: Use static links or simple Javascript to send some commands witharguments to the application:function sendCommand(command) {var s = 'command://' + encodeURIComponent(command);for(var i=1; i<arguments.length; s+='&'+encodeURIComponent(arguments[i++]));window.location = s;}1)Cookies: Access and modify the cookies set by the various browser instances.2)Classpath pages: Load web pages from the classpath with the help of the embedded simpleweb server.3)Mozilla XPCOM Page Edition: Toggle edition mode of a web page by accessing theMozilla interfaces using XPCOM.4)Mozilla XPCOM Download Manager: Modify the browser's download managerusing Mozilla XPCOM.(2)JFlashPlayer1)Simple Example: Display a Flash application.2)Variables and Flow: Control the flow of a Flash animation, and get/set global variables.3)Function Calls: Invoke functions, with or without waiting for a result, and listen to Flashcommands.(3)JVLCPlayerSimple Example: Load a movie/sound file to an embedded VLC player.(4)JHTMLEditor1)Simple Example: Graphically edit some HTML, get and set the HTML content.2)Custom Configuration: Modify default behaviors with custom configuration script.3)TinyMCE implementation: Use the TinyMCE editor implementation instead of the defaultFCKeditor.(5)JSyntaxHighlighterSimple Example: Display some content with syntax highlighting from one of the available languages (C++, C#, css, Delphi, Java, JS, PHP, Python, Ruby, SQL, VB, XML, HTML).(6)JWMediaPlayer (win32)Simple Example: Load a movie/sound file to an embedded multimedia player.(7)Additional Features1)Constrain Visibility: Constrain the visibility to superimpose Swing and native components.2)Deferred Destruction: Defer destruction until finalization to add/remove the samecomponent.It is not destroyed when removed but on disposeNativePeer() or garbage collection.3)Hierarchy Proxying: Use a proxied component hierarchy for the native components toallow re-parenting and change of component Z-order.4)Thumbnail Creation: Create a thumbnail by painting a native component to an image.5)Pseudo Transparency: Simulate alpha blending of a Swing component over a nativecomponent. This works rather well over static content.6)Component Life Cycle: Present the life cycle of a component and when method callshappen.Also highlight how runInSequence(Runnable) can be useful, and for special needs how to use initializeNativePeer().(8)Utilities File AssociationsGet the file type associations, and use them to launch files.4、运行示例(1)java –jar DJNativeSwing-SWTDemo.jar(2)结果示图。
Swing组件及应用 Swing组件是Java推出的一套新的图形用户界面开发工具包,它简化了基于图形界面的窗口系统的开发。使用Swing可以方便地选择与设计自己需要的GUI风格,带来了更多的灵活性和更强大的功能。 Swing是建立在AWT之上的,它利用了AWT的下层组件,包括图形、颜色、字体、布局管理器和工具包,也使用了AWT的事件处理机制,但基本上没有使用AWT的基本组件。Swing提供了几十个组件,数倍于AWT,增加了Windows环境下几乎所有的控件,极大的方便了图形用户界面的设计。Swing组件几乎都是轻量组件,没有本地的对等组件,不像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。 主要介绍Swing组件的基本思想及一些常用的Swing组件的功能与用法,并讲述了利用JBuilder进行图形用户界面设计的基本过程。
1 Swing简介
1.1 Swing窗口的层次 Swing窗口建立时,其中包含了五个层次,远比AWT的窗口复杂。 顶层容器Top Level Container: 顶层容器Top Level Container是一个窗口容器对象,在这样的一个对象里可以再加入其他的窗口对象。JFrame、JApplet、JDialog等就可以作为顶层容器Top Level Container。 根面板Root Pane: 根面板Root Pane:是顶层容器Top Level Container中所包含的最内层,通常我们无法在这一层做操作与处理。 层次面板Layered Pane: 加入在层次面板Layered Pane中对象可以设定其层次,而不会被内容面板Content Pane中对象屏蔽。层次高的对象和层次低的对象重叠时,层次低的对象会被屏蔽。 内容面板Content Pane: 大部分的可视对象都放在内容面板Content Pane中,一般在程序中必须用getContentPane()方法来获取窗口容器,然后将其加到这一层中。 玻璃面板Glass Pane: 在玻璃面板Glass Pane这一层次上主要用来产生绘图效果,以及触发窗口程序的各种事件。
1.2 Swing包简介 Swing包是JFC(Java Foundation Classes)的一部分,由许多包组成。表1列出了一些常用的包。其中包javax.swing包含了图形用户界面所需的基本组件和工具。 表1 Swing包简介 包 名 说 明 javax.swing Swing组件和使用工具类 javax.swing.event 事件和监听器类 javax.swing.table JTable表格组件类 javax.swing.tree Jtree树型视图组件类 javax.swing.undo 支持取消操作 javax.swing.border 轻量组件的边框 javax.swing.colorchooser 颜色选择对话框JColorChooser javax.swing.filechooser 文件选择对话框JFileChooser javax.swing.plaf 抽象类,定义UI代表的行为 javax.swing.plaf.basic 实现标准界面样式公共功能的基类
javax.swing.plaf.metal 实现Metal界面样式 com.sun.swing.plaf.motif 实现Motif界面样式 com.sun.java.swing.plaf.windows. 实现Windows界面样式 javax.swing.text 支持文档的显示与编辑 javax.swing.text.html 支持HTML文档的显示与编辑 javax.swing.text.html.parser HTML文档分析器 javax.swing.text.rtf 支持RTF文档的显示与编辑
1.3 Swing组件 Swing提供了40多个组件,其组件名均以J开头,表2列出了Swing组件极其描述,并给出了与之对应的AWT组件。 表2 Swing组件简介 组 件 说 明 JApplet 是AWT中的Applet的扩展,它含有JrootPane的一个实例 JButton 能显示文字和图标的按钮,对应于AWT中的Button JCheckBox 能显示文字和图标的复选按钮,对应于AWT中的Checkbox JCheckBoxMenuItem 复选菜单,对应于AWT中的CheckboxMenuItem JComboBox 下拉列表框,对应于AWT中的Choice JComponent 所有轻量组件的基类 JDesktopPane 内部窗体的容器 JDialog 对话框,是AWT中的Dialog的扩展 JEditorPane 文本编辑面板 JFrame 窗口,是AWT中的Frame的扩展 JInternalFrame 在JdesktopPane中出现的内部窗口 JLabel 能显示文字和图标的标签,对应于AWT中的Label JLayeredPane 能够在不同层上显示对象的容器 JList 列表框,对应于AWT中的List JMenu 菜单,对应于AWT中的Menu JMenuBar 菜单条,对应于AWT中的MenuBar 组 件 说 明 JMenuItem 菜单项,对应于AWT中的MenuItem JOptionPane 标准对话框 JPanel 容器,对应于AWT中的Panel JPasswordField 口令输入框,是AWT中的TextField的扩展 JPopupMenu 弹出式菜单 JProgressBar 进度条 JRadioButton 单选按钮,对应于AWT中的Checkbox JRootPane 根面板,包含一个层次面板Layered Pane、内容面板Content Pane、玻璃面板Glass Pane和一个菜单条 JScrollBar 滚动条,对应于AWT中的ScrollBar JScrollPane 滚动面板,对应于AWT中的ScrollPane JSeparator 水平或垂直分隔条 JSlider 滑动条 JSplitPane 有两个分隔区的面板,这两个分隔区能自动调整大小 JTabbedPane 选项卡 JTable 表格 JTableHeader 表格头 JTextArea 多行文本编辑框,对应于AWT中的TextArea JTextComponent 文本组件的基类,对应于AWT中的TextComponent JTextField 单行文本编辑框,对应于AWT中的TextField JTextPane 简单的文本编辑器 JToggleButton 有两种状态的按钮 JToolBar 工具条 JToolTip 当光标落在一个组件上时,该组件上显示的一行文字
JTree 树型视图 JViewport 取景器 JWindow 窗口,是AWT中的Window的扩展
2 Swing常用组件(一)
2.1 窗口JFrame JFrame是带标题的顶层窗口,它是从java.awt.Frame继承而来的,因此Frame的所有方法,JFrame都可以用。JFrame的类层次关系为: java.lang.Object | +--java.awt.Component | +--java.awt.Container | +--java.awt.Window | +--java.awt.Frame | +--javax.swing.JFrame 1. 构造函数 JFrame的构造函数有两个: JFrame() 功能:建立一个无标题的JFrame。 JFrame(String title) 功能:建立一个标题为title的JFrame。 JFrame(GraphicsConfiguration gc) 功能:建立一个无标题但要求指定配置显示设备的JFrame。 JFrame(String title ,GraphicsConfiguration gc) 功能:建立一个标题为title、显示设备配置为gc的JFrame。 2. 常用方法 因为JFrame继承了Frame,所以Frame的几乎所有方法,JFrame都具有(参见表9.1)。此外,JFrame还增加了自己的一些方法,表3列出了一些常用的方法。 表3 JFrame增加的一些常用方法 方 法 说 明 Container getContentPane() 返回JFrame的内容面板 JMenuBar getJMenuBar() 返回JFrame的菜单条 void setDefaultCloseOperation(int op) 设定JFrame窗口关闭时的操作。op的值为: DO_NOTHING_ON_CLOSE:不关闭窗口; HIDE_ON_CLOSE:隐藏窗口; DISPOSE_ON_CLOSE:隐藏并处理窗口; EXIT_ON_CLOSE:关闭窗口 void setJMenuBar(JMenuBar menubar) 设定JFrame中的菜单条 3. 示例 【例1】建立一个JFrame对象,运行的结果为图1,比较例9.1,注意程序及运行结果的差异。程序为:
import java.awt.*; import javax.swing.*; //用到Swing组件,必须引用java.swing包 public class MyJFrame { public static void main(String args[])
图10.1