第一章:Java图形界面的基础
1.1 Java图形界面的概念
Java图形界面(Graphical User Interface,简称GUI)是指使用图形化的方式与用户进行交互的界面。在Java中,我们可以通过Swing和JavaFX两个库来实现图形界面。
1.2 Swing简介
Swing是Java的一个图形界面库,它提供了丰富的组件,如按钮、文本框、菜单等,可以帮助我们快速搭建图形界面。
1.3 JavaFX简介
JavaFX是Java的下一个图形界面库,它提供了更丰富的组件和更好的性能,同时支持CSS样式和动画。
第二章:Swing组件的使用
2.1 窗口组件
窗口是Swing应用程序的基本组件,它包含了菜单栏、工具栏、状态栏等部分。
import javax.swing.JFrame;
public class MainWindow extends JFrame {
public MainWindow() {
// 设置窗口标题
setTitle("主窗口");
// 设置窗口大小
setSize(800, 600);
// 设置窗口关闭操作
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口布局
setLayout(new BorderLayout());
// 添加组件
add(new JButton("按钮"), BorderLayout.CENTER);
// 显示窗口
setVisible(true);
}
public static void main(String[] args) {
new MainWindow();
}
}
2.2 常用组件
Swing提供了丰富的组件,如按钮、文本框、标签、列表框、表格等。
import javax.swing.*;
import java.awt.*;
public class CommonComponents extends JFrame {
public CommonComponents() {
setTitle("常用组件");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(0, 2));
add(new JButton("按钮"));
add(new JTextField("文本框"));
add(new JLabel("标签"));
add(new JList<>(new String[]{"列表项1", "列表项2", "列表项3"}));
add(new JTable(new Object[]{"数据1", "数据2", "数据3"}, new Object[]{"列1", "列2", "列3"}));
setVisible(true);
}
public static void main(String[] args) {
new CommonComponents();
}
}
第三章:JavaFX组件的使用
3.1 JavaFX简介
JavaFX是Java的下一个图形界面库,它提供了更丰富的组件和更好的性能。
3.2 常用组件
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 JavaFXExample extends Application {
@Override
public void start(Stage primaryStage) {
Button button = new Button("按钮");
StackPane root = new StackPane();
root.getChildren().add(button);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("JavaFX示例");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
第四章:布局管理器
布局管理器是Swing和JavaFX中用于管理组件位置的类。常见的布局管理器有FlowLayout、BorderLayout、GridLayout、GridBagLayout等。
4.1 FlowLayout
FlowLayout是默认的布局管理器,它按照从左到右、从上到下的顺序排列组件。
import javax.swing.*;
import java.awt.*;
public class FlowLayoutExample extends JFrame {
public FlowLayoutExample() {
setTitle("FlowLayout示例");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
add(new JButton("按钮1"));
add(new JButton("按钮2"));
add(new JButton("按钮3"));
setVisible(true);
}
public static void main(String[] args) {
new FlowLayoutExample();
}
}
4.2 BorderLayout
BorderLayout将组件放置在窗口的五个区域:北、南、东、西、中。
import javax.swing.*;
import java.awt.*;
public class BorderLayoutExample extends JFrame {
public BorderLayoutExample() {
setTitle("BorderLayout示例");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
add(new JButton("按钮1"), BorderLayout.NORTH);
add(new JButton("按钮2"), BorderLayout.SOUTH);
add(new JButton("按钮3"), BorderLayout.EAST);
add(new JButton("按钮4"), BorderLayout.WEST);
add(new JButton("按钮5"), BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
new BorderLayoutExample();
}
}
第五章:事件处理
在图形界面中,我们需要对用户操作(如点击按钮)做出响应。这需要我们编写事件处理程序。
5.1 监听器接口
在Java中,我们可以通过实现监听器接口来处理事件。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ActionListenerExample extends JFrame {
public ActionListenerExample() {
setTitle("事件处理示例");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JButton button = new JButton("点击我");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击了!");
}
});
add(button, BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
new ActionListenerExample();
}
}
5.2 内部类监听器
我们还可以使用内部类来创建监听器。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class InnerClassListenerExample extends JFrame {
public InnerClassListenerExample() {
setTitle("内部类监听器示例");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JButton button = new JButton("点击我");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击了!");
}
});
add(button, BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
new InnerClassListenerExample();
}
}
第六章:资源文件
在图形界面程序中,我们通常会使用资源文件来管理图片、字体等资源。
6.1 资源文件的使用
在Java中,我们可以使用ClassLoader类来加载资源文件。
import javax.imageio.ImageIO;
import java.awt.*;
import java.io.IOException;
public class ResourceExample {
public static void main(String[] args) {
try {
Image image = ImageIO.read(ResourceExample.class.getClassLoader().getResource("image.png"));
System.out.println(image.getWidth() + "x" + image.getHeight());
} catch (IOException e) {
e.printStackTrace();
}
}
}
6.2 图片的使用
在Java中,我们可以使用Image类来处理图片。
import javax.imageio.ImageIO;
import java.awt.*;
import java.io.IOException;
public class ImageExample {
public static void main(String[] args) {
try {
Image image = ImageIO.read(ResourceExample.class.getClassLoader().getResource("image.png"));
System.out.println(image.getWidth() + "x" + image.getHeight());
} catch (IOException e) {
e.printStackTrace();
}
}
}
第七章:国际化
国际化是指让程序支持多种语言和地区。
7.1 国际化简介
国际化是指让程序支持多种语言和地区。在Java中,我们可以使用ResourceBundle类来实现国际化。
7.2 国际化示例
import java.util.Locale;
import java.util.ResourceBundle;
public class InternationalizationExample {
public static void main(String[] args) {
Locale locale = Locale.getDefault();
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
System.out.println(bundle.getString("greeting"));
}
}
第八章:总结
通过本章的学习,我们了解了Java图形界面的基础、Swing组件的使用、JavaFX组件的使用、布局管理器、事件处理、资源文件和国际化。希望本章的内容能够帮助你轻松入门Java图形界面编程。
