Java教程-Java Swing 教程

Java Swing 教程
Java Swing 教程是 Java Foundation Classes (JFC) 的一部分,用于创建基于窗口的应用程序。它建立在 AWT (Abstract Windowing Toolkit) API 的基础上,完全使用 Java 编写。
与 AWT 不同,Java Swing 提供了平台无关和轻量级的组件。
javax.swing 包提供了用于 Java Swing API 的类,例如 JButton、JTextField、JTextArea、JRadioButton、JCheckbox、JMenu、JColorChooser 等。
AWT 和 Swing 之间的区别
Java AWT 和 Swing 之间有许多区别,如下所示。
No. | Java AWT | Java Swing |
---|---|---|
1) | AWT 组件是平台相关的。 | Java swing 组件是平台无关的。 |
2) | AWT 组件是重量级的。 | Swing 组件是轻量级的。 |
3) | AWT不支持可插入的外观。 | Swing支持可插入的外观。 |
4) | AWT 提供的组件比 Swing 少。 | Swing 提供了更强大的组件,例如表格、列表、滚动面板、颜色选择器、选项卡面板等。 |
5) | AWT不遵循 MVC(模型视图控制器),其中模型代表数据,视图代表表示,控制器充当模型和视图之间的接口。 | Swing遵循 MVC。 |
什么是 JFC
Java Foundation Classes (JFC) 是一组简化桌面应用程序开发的 GUI 组件。
Java Swing 类的层次结构
Java Swing API 的层次结构如下所示。
Component 类的常用方法
Component 类的方法在 Java Swing 中被广泛使用,如下所示。
Method | Description |
---|---|
public void add(Component c) | 在另一个组件上添加一个组件。 |
public void setSize(int width,int height) | 设置组件的大小。 |
public void setLayout(LayoutManager m) | 为组件设置布局管理器。 |
public void setVisible(boolean b) | 设置组件的可见性。默认情况下为假。 |
Java Swing 示例
创建 Frame 的两种方式:
- 通过创建 Frame 类的对象(关联)
- 通过扩展 Frame 类(继承)
我们可以将 Swing 代码编写在 main()、构造函数或任何其他方法中。
简单的 Java Swing 示例
下面是一个简单的 Swing 示例,在 main() 方法中创建一个按钮并将其添加到 JFrame 对象中。
文件:FirstSwingExample.java
import javax.swing.*;
public class FirstSwingExample {
public static void main(String[] args) {
JFrame f=new JFrame();//创建JFrame的实例
JButton b=new JButton("click");//创建JButton实例
b.setBounds(130,100,100, 40);//x轴,y轴,宽,高
f.add(b);//在JFrame中添加按钮
f.setSize(400,500);//400宽500高
f.setLayout(null);//不使用布局管理器
f.setVisible(true);//使框架可见
}
}
}
通过构造函数在关联内编写 Swing 的示例
我们还可以在 Java 构造函数中编写创建 JFrame、JButton 和方法调用的所有代码。
文件:Simple.java
import javax.swing.*;
public class Simple {
JFrame f;
Simple(){
f=new JFrame();//creating instance of JFrame
JButton b=new JButton("click");//creating instance of JButton
b.setBounds(130,100,100, 40);
f.add(b);//adding button in JFrame
f.setSize(400,500);//400 width and 500 height
f.setLayout(null);//using no layout managers
f.setVisible(true);//making the frame visible
}
public static void main(String[] args) {
new Simple();
}
}
上面的示例中使用了 setBounds(int xaxis, int yaxis, int width, int height) 方法,该方法设置了按钮的位置。
通过继承实现 Swing 的简单示例
我们还可以继承 JFrame 类,因此无需显式创建 JFrame 类的实例。
文件:Simple2.java
import javax.swing.*;
public class Simple2 extends JFrame{//inheriting JFrame
JFrame f;
Simple2(){
JButton b=new JButton("click");//create button
b.setBounds(130,100,100, 40);
add(b);//adding button on frame
setSize(400,500);
setLayout(null);
setVisible(true);
}
public static void main(String[] args) {
new Simple2();
}}