急!急!!急!!! http://java.sun.com/docs/books/tutorial/uiswing/index.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Java Swing介绍一. JFC/Swing概述1.JFC JFC是Java Foundation Classes的简称, 中文可译为Java基础类集。JFC的主要用途是帮助用户建立图形用户界面GUI。JFC中包含了很多有用的GUI组件和服务,其中的一个重要组成部分就是Swing。JFC的出现(1997年首次发布),将GUI推向一个新的境界。JFC主要包含五类API:(1) SwingSwing主要是为开发图形用户界面而设计的,它包含了许多独立于平台的GUI组件,功能比AWT更强。它也是我们要讨论的主要对象。(2) Pluggable Look & Feel Support(多种外观的支持)让使用Swing组件的程序能够自由地选择looks和feels,而不必在乎程序当前运行的平台是什么。(3)Accessibility API 提供一些辅助性的功能,如读屏幕,屏幕放大,处理语音等,主要为一些使用非传统输入输出的程序提供支持。(4) Java 2D API 是一套开发二维图形的工具包, 能使开发者方便地开发出包含高质量的图形、图象和文本的程序。(5) Drag and Drop Support 提供了Java应用程序和本地的非Java应用程序之间通过拖放(Drag and Drop)来交换数据的能力。2.Swing接下来我们主要介绍Swing。Swing提供了整套的GUI组件,为了保证可移植性,它们是完全用Java写的(100% Java)。Swing的主要特点有:(1) Pluggable look and feelSwing提供了多种图形用户界面的外观能让开发者和用户来选择,这样,同一程序在Windows环境上运行时可以有Windows的外观,而在UNIX平台运行时又可以有类似 UNIX应用程序的外观,就好象它们分别是在各自的环境中开发的。(2) Swing的包Swing中的包有很多,具体可参见Swing的API文档,其中最常用的两个包为: javax.swing 和javax.swing.event 。这是Swing1.1最终版以后的名称,以前javax.swing的包名为com.sun.java.swing。(3) Swing的体系结构Swing提供了比AWT更多和更复杂的组件,这些组件的功能也更强。实际上,Swing是建立在AWT的基础上的,它使用了AWT的许多部分。但与AWT的实现依赖于特定平台不同,Swing不依赖于任何特定平台。Swing的体系结构如下:Top-level Container:(顶层Container类)JApplet:+--java.applet.Applet|+--javax.swing.JAppletJFrame:+--java.awt.Frame|+--javax.swing.JFrameJWindow:+--java.awt.Window|+--javax.swing.JWindowJDialog:+--java.awt.Dialog|+--javax.swing.JDialog除top-level Container外,其它Swing组件均是javax.swing.JComponent的子孙类。java.awt.Containerjavax.swing.JComponetJTextAreaJTextComponent JTextField JPasswordFieldHtmlEditorKitAbstractButtonJPanelJComboBox JToggleButton JCheckBoxJLabel JButton JRadioButtonJList JMenuItemJToolBarJMenuBarJPopupMenu JRadioButtonMenuItemJPane JCheckBoxMenuItemJScrollBar JMenuJScrollPaneJSliderJTableJSeparatorJTreeJProgressBarJRootPaneJSplitPaneJTabbedPane(4) Swing组件的功能:Swing组件具有一些AWT不具有的功能,如:1) Swing的button和label上能显示图象,而不仅仅是文字2) 大部分Swing组件可很容易地增加或改变其边界(border)3) Swing组件不一定是长方型的,也可以是圆的4) 开发者可自由设定Swing的外观。有一种标准的外观选项,称为cross-platform look and feel, 或称Java(Metal) Look & Feel,其它常用的外观选项还有Windows Look & Feel 和CDE/Motif Look & Feel。而AWT 组件的外观一般与所在的平台或环境一致。 在程序中,Swing组件不能与AWT组件混用。(5) Swing与JDKSwing包含在JDK1.2及以后版本中,但不包含在JDK1.1.X中,所以JDK1.2版以后的用户可直接使用Swing的包,而JDK1.1的用户需另外安装Swing软件包,安装后再将相应的库文件(如swing.jar或swingall.jar)的路径加入CLASSPATH。二. 编写Swing程序1. 构建Swing的GUI通常,每个Swing组件都有一个顶层的Swing Container, 常用的顶层Container有JFrame, JApplet, JWindows和JDialog。这些Container常常是AWT组件的子类,如JFrame就是java.awt.Frame的子类,它们可以包含其它Swing组件。除Swing container之外的Swing组件,常称为Lightweight components(轻量控件),如JButton, JPanel和JMenu等。这些组件能加到顶层Container对应的content pane中,而不能直接加到Container里面。content pane也是一个Lightweight components, 典型的如JPanel。以下是一个包含两个button,一个text field和一个list的GUI的层次结构:JFrame (a top-level container)|...|content pane |JPanel|+----------+-----------+| | |JButton JButton JPanel|+------------+| |JtextField JList注:若是Applet, 则顶层的Container为Japplet。我们可以将第七章用AWT编写的图形界面的例子用Swing来重写。程序如下:import java.awt.*;import javax.swing.*;public class SExGui {private JFrame f;private JButton b1;private JButton b2;Container contentPane;public static void main(String args[]) {SExGui guiWindow = new SExGui();guiWindow.go();}public void go() {f = new JFrame("GUI example");contentPane = f.getContentPane();contentPane.setLayout(new FlowLayout());b1= new JButton("Press Me");b2 = new JButton("Don't Press Me");contentPane.add(b1);contentPane.add(b2);f.pack();f.setVisible(true);}}程序运行的效果如下:2. Swing应用程序以下是一个Swing应用程序,通过该程序我们可以了解Swing程序的编写方法。import java.awt.*;import java.awt.event.*;import javax.swing.*; public class SwingSample implements ActionListener {private JFrame jFrame;private JLabel jLabel;private JPanel jPanel;private JButton jButton;private String labelPrefix = "Number of button clicks: ";private int numClicks = 0;public void go() {jFrame = new JFrame("HelloSwing");jLabel = new JLabel(labelPrefix+"0");jButton = new JButton("I am a Swing button!");jButton.addActionListener(this);//Set up panejPanel = new JPanel();//Arrange for compts to be in a single column.jPanel.setLayout(new GridLayout(0,1));//Put compts in pane,not in JFrame directly.jPanel.add(jButton);jPanel.add(jLabel);jFrame.setContentPane(jPanel);//Set up a WindowListener inner class to handle//window's quit button.WindowListener w1 = new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}};jFrame.addWindowListener(w1);jFrame.pack();jFrame.setVisible(true);}//Button handling.public void actionPerformed(ActionEvent e) {numClicks++;jLabel.setText(labelPrefix+numClicks);}public static void main(String[] args) {HelloSwing helloSwing = new HelloSwing();helloSwing.go();}}上面一个例子包含了以下几步:(1) Importing Swing packages (2) Setting up the top-level container (3) Setting up buttons and labels (4) Adding components to containers (5) Handling events 吐槽一下JAVA:有人注意到这个问题了吗? 求大师 怎么显示画板上的直线?在线等,急用 Java API 文档<T>”、“<K,V>”、“<E>”这样的字眼,这代表什么类型?有什么含义? ~1(1的补码是多少) hash key值 java 多线程 这样会并发吗 本人接了一个小项目,有兴趣做的请进来 请问我想得到某个月的最后一天,该怎么做呢 关于学习Java后的项目问题 关于货币大小写转换的方法? 有关BufferedImage和Image的问题!!!!!
1.JFC
JFC是Java Foundation Classes的简称, 中文可译为Java基础类集。JFC的主要用途是帮助用户建立图形用户界面GUI。JFC中包含了很多有用的GUI组件和服务,其中的一个重要组成部分就是Swing。JFC的出现(1997年首次发布),将GUI推向一个新的境界。
JFC主要包含五类API:
(1) Swing
Swing主要是为开发图形用户界面而设计的,它包含了许多独立于平台的GUI组件,功能比AWT更强。它也是我们要讨论的主要对象。
(2) Pluggable Look & Feel Support(多种外观的支持)
让使用Swing组件的程序能够自由地选择looks和feels,而不必在乎程序当前运行的平台是什么。
(3)Accessibility API
提供一些辅助性的功能,如读屏幕,屏幕放大,处理语音等,主要为一些使用非传统输入输出的程序提供支持。
(4) Java 2D API
是一套开发二维图形的工具包, 能使开发者方便地开发出包含高质量的图形、图象和文本的程序。
(5) Drag and Drop Support
提供了Java应用程序和本地的非Java应用程序之间通过拖放(Drag and Drop)来交换数据的能力。2.Swing
接下来我们主要介绍Swing。
Swing提供了整套的GUI组件,为了保证可移植性,它们是完全用Java写的(100% Java)。
Swing的主要特点有:
(1) Pluggable look and feel
Swing提供了多种图形用户界面的外观能让开发者和用户来选择,这样,同一程序在Windows环境上运行时可以有Windows的外观,而在UNIX平台运行时又可以有类似 UNIX应用程序的外观,就好象它们分别是在各自的环境中开发的。
(2) Swing的包
Swing中的包有很多,具体可参见Swing的API文档,其中最常用的两个包为:
javax.swing 和javax.swing.event 。这是Swing1.1最终版以后的名称,以前javax.swing的包名为com.sun.java.swing。
(3) Swing的体系结构
Swing提供了比AWT更多和更复杂的组件,这些组件的功能也更强。实际上,Swing是建立在AWT的基础上的,它使用了AWT的许多部分。但与AWT的实现依赖于特定平台不同,Swing不依赖于任何特定平台。
Swing的体系结构如下:
Top-level Container:(顶层Container类)
JApplet:
+--java.applet.Applet
|
+--javax.swing.JApplet
JFrame:
+--java.awt.Frame
|
+--javax.swing.JFrame
JWindow:
+--java.awt.Window
|
+--javax.swing.JWindow
JDialog:
+--java.awt.Dialog
|
+--javax.swing.JDialog
除top-level Container外,其它Swing组件均是javax.swing.JComponent的子孙类。
java.awt.Containerjavax.swing.JComponetJTextArea
JTextComponent JTextField JPasswordField
HtmlEditorKit
AbstractButton
JPanel
JComboBox JToggleButton JCheckBox
JLabel JButton JRadioButton
JList JMenuItem
JToolBar
JMenuBar
JPopupMenu JRadioButtonMenuItem
JPane JCheckBoxMenuItem
JScrollBar JMenu
JScrollPane
JSlider
JTable
JSeparator
JTree
JProgressBar
JRootPane
JSplitPane
JTabbedPane(4) Swing组件的功能:
Swing组件具有一些AWT不具有的功能,如:
1) Swing的button和label上能显示图象,而不仅仅是文字
2) 大部分Swing组件可很容易地增加或改变其边界(border)
3) Swing组件不一定是长方型的,也可以是圆的
4) 开发者可自由设定Swing的外观。有一种标准的外观选项,称为cross-platform look and feel, 或称Java(Metal) Look & Feel,其它常用的外观选项还有Windows Look & Feel 和CDE/Motif Look & Feel。而AWT 组件的外观一般与所在的平台或环境一致。
在程序中,Swing组件不能与AWT组件混用。
(5) Swing与JDK
Swing包含在JDK1.2及以后版本中,但不包含在JDK1.1.X中,所以JDK1.2版以后的用户可直接使用Swing的包,而JDK1.1的用户需另外安装Swing软件包,安装后再将相应的库文件(如swing.jar或swingall.jar)的路径加入CLASSPATH。二. 编写Swing程序
1. 构建Swing的GUI
通常,每个Swing组件都有一个顶层的Swing Container, 常用的顶层Container有JFrame, JApplet, JWindows和JDialog。这些Container常常是AWT组件的子类,如JFrame就是java.awt.Frame的子类,它们可以包含其它Swing组件。
除Swing container之外的Swing组件,常称为Lightweight components(轻量控件),如JButton, JPanel和JMenu等。这些组件能加到顶层Container对应的content pane中,而不能直接加到Container里面。content pane也是一个Lightweight components, 典型的如JPanel。
以下是一个包含两个button,一个text field和一个list的GUI的层次结构:JFrame (a top-level container)
|
...
|
content pane
|
JPanel
|
+----------+-----------+
| | |
JButton JButton JPanel
|
+------------+
| |
JtextField JList注:若是Applet, 则顶层的Container为Japplet。我们可以将第七章用AWT编写的图形界面的例子用Swing来重写。程序如下:
import java.awt.*;
import javax.swing.*;public class SExGui {
private JFrame f;
private JButton b1;
private JButton b2;
Container contentPane;public static void main(String args[]) {
SExGui guiWindow = new SExGui();
guiWindow.go();
}
public void go() {
f = new JFrame("GUI example");
contentPane = f.getContentPane();
contentPane.setLayout(new FlowLayout());
b1= new JButton("Press Me");
b2 = new JButton("Don't Press Me");
contentPane.add(b1);
contentPane.add(b2);
f.pack();
f.setVisible(true);
}
}程序运行的效果如下:2. Swing应用程序以下是一个Swing应用程序,通过该程序我们可以了解Swing程序的编写方法。import java.awt.*;
import java.awt.event.*;
import javax.swing.*; public class SwingSample implements ActionListener {
private JFrame jFrame;
private JLabel jLabel;
private JPanel jPanel;
private JButton jButton;
private String labelPrefix = "Number of button clicks: ";
private int numClicks = 0;public void go() {
jFrame = new JFrame("HelloSwing");
jLabel = new JLabel(labelPrefix+"0");
jButton = new JButton("I am a Swing button!");jButton.addActionListener(this);
//Set up pane
jPanel = new JPanel();//Arrange for compts to be in a single column.
jPanel.setLayout(new GridLayout(0,1));//Put compts in pane,not in JFrame directly.
jPanel.add(jButton);
jPanel.add(jLabel);
jFrame.setContentPane(jPanel);//Set up a WindowListener inner class to handle
//window's quit button.
WindowListener w1 = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
jFrame.addWindowListener(w1);jFrame.pack();
jFrame.setVisible(true);
}//Button handling.
public void actionPerformed(ActionEvent e) {
numClicks++;
jLabel.setText(labelPrefix+numClicks);
}public static void main(String[] args) {HelloSwing helloSwing = new HelloSwing();
helloSwing.go();
}
}上面一个例子包含了以下几步:
(1) Importing Swing packages
(2) Setting up the top-level container
(3) Setting up buttons and labels
(4) Adding components to containers
(5) Handling events