Java作为一种广泛应用的编程语言,其在图形用户界面方面也有相应的发展历程。本文将介绍Java中的图形用户界面的发展历程以及AWT库、Swing库、JavaFX库的使用方法。其中,AWT是Java的第一个GUI库,而Swing和JavaFX则是后来的发展,更加强大和灵活。
AWT(Abstract Window Toolkit)是Java的第一个GUI库,可以使用各种GUI组件,如按钮、文本框、复选框等等。AWT的核心是java.awt包,这个包中有一个类Canvas,可以用来创建绘制图形的区域。AWT中的组件是依赖于本地平台的,因此AWT程序在不同的平台上可能会有所不同。
AWT提供了很多组件,例如:Label、Button、Checkbox、Choice、List、Scrollbar、TextField、TextArea、Canvas、Panel、Dialog、Frame等等。这些组件分别对应不同的界面元素,可以通过AWT组件的方法来设置组件的属性,例如:大小、位置、背景色、前景色等等。
AWT中的事件是由Event类来描述的,可以通过Event类的方法来获取事件类型、事件源、事件发生的位置等信息。AWT中的事件包括鼠标事件、键盘事件、窗口事件、组件事件等等。
Swing是Java的第二个GUI库,是在AWT的基础上发展起来的。Swing提供了一些新的组件,如JButton、JLabel、JTextField等等,这些组件都是由纯Java代码实现的,可以跨平台使用。Swing的核心是javax.swing包。
Swing提供了很多组件,例如:JLabel、JButton、JCheckBox、JRadioButton、JComboBox、JList、JTable、JTextArea、JScrollPane、JFrame、JDialog、JPanel等等。Swing组件可以通过设置属性来改变外观和行为。
Swing中的事件是由ActionEvent类、MouseEvent类、KeyEvent类等来描述的。Swing中的事件处理是基于观察者模式的,可以通过给组件添加监听器来处理事件。
JavaFX是Java的第三个GUI库,是在Swing的基础上发展起来的。JavaFX提供了一种基于XML的声明式编程模型,可以将UI和应用逻辑分离开来,从而使得开发更加灵活和易于维护。JavaFX的核心是javafx包。
JavaFX提供了很多组件,例如:Label、Button、CheckBox、ChoiceBox、ComboBox、ListView、TableView、TextArea、TextField、ScrollPane、Image、WebView等等。JavaFX组件可以通过CSS来设置样式,也可以通过FXML来创建UI。
JavaFX中的事件是由javafx.event包中的类来描述的。JavaFX中的事件处理也是基于观察者模式的,可以使用Lambda表达式来处理事件。
下面是一个简单的JavaFX程序,用于显示一个窗口和一个按钮:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class HelloWorld extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { Button btn = new Button(); btn.setText("Hello World"); btn.setOnAction(event -> { System.out.println("Hello World"); }); StackPane root = new StackPane(); root.getChildren().add(btn); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("Hello World"); primaryStage.setScene(scene); primaryStage.show(); } }
这个程序创建了一个按钮,并为按钮添加了一个事件处理器,当按钮被点击时,会在控制台输出一段文本。程序使用了StackPane来布局按钮,并将StackPane添加到了Scene中,最后将Scene添加到了Stage中并显示出来。
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com