Java CS程序:数据表格控件

引言

在计算机科学领域,数据表格是一种常见的数据展示和管理工具,它可以以表格的形式展示和存储数据。在Java编程中,我们可以使用各种数据表格控件来创建、显示和操作数据表格。本文将介绍Java中一些常见的数据表格控件,并通过代码示例演示它们的用法。

1. JTable

JTable是Swing框架中提供的一个强大的数据表格控件。它可以用于显示和编辑二维表格数据。下面是一个简单的JTable示例:

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class JTableExample {

    public static void main(String[] args) {
        // 创建表格数据
        Object[][] data = {
            {"John", 25, "USA"},
            {"Alice", 30, "UK"},
            {"Bob", 35, "Canada"}
        };
        
        // 创建表格列名
        String[] columnNames = {"Name", "Age", "Country"};
        
        // 创建JTable并设置数据和列名
        JTable table = new JTable(data, columnNames);
        
        // 创建滚动面板,并将表格放入其中
        JScrollPane scrollPane = new JScrollPane(table);
        
        // 创建主面板,并将滚动面板放入其中
        JPanel panel = new JPanel();
        panel.add(scrollPane);
        
        // 创建窗口,并将主面板放入其中
        JFrame frame = new JFrame("JTable Example");
        frame.setContentPane(panel);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

上面的代码首先创建了一个二维数组 data 来存储表格数据,然后创建了一个字符串数组 columnNames 来存储表格列名。接下来,我们使用 JTable 构造函数来创建一个新的表格,并将数据和列名传递给它。然后,我们使用 JScrollPane 来创建一个带滚动条的面板,并将表格放入其中。最后,我们将该面板放入一个主面板中,并将主面板放入一个窗口中显示出来。

2. JavaFX TableView

除了Swing,Java还提供了JavaFX作为另一个用户界面开发框架。JavaFX中的 TableView 类提供了类似于JTable的功能,用于显示和编辑数据表格。下面是一个简单的JavaFX TableView示例:

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class TableViewExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        // 创建表格数据
        ObservableList<Person> data = FXCollections.observableArrayList(
                new Person("John", 25, "USA"),
                new Person("Alice", 30, "UK"),
                new Person("Bob", 35, "Canada")
        );

        // 创建表格列
        TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));

        TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");
        ageColumn.setCellValueFactory(new PropertyValueFactory<>("age"));

        TableColumn<Person, String> countryColumn = new TableColumn<>("Country");
        countryColumn.setCellValueFactory(new PropertyValueFactory<>("country"));

        // 创建TableView并设置数据和列
        TableView<Person> tableView = new TableView<>();
        tableView.setItems(data);
        tableView.getColumns().addAll(nameColumn, ageColumn, countryColumn);

        // 创建主布局并将TableView放入其中
        VBox root = new VBox(tableView);

        // 创建场景并将主布局放入其中
        Scene scene = new Scene(root);

        // 设置舞台标题和场景,然后显示舞台
        primaryStage.setTitle("TableView Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

// 定义一个Person类来存储数据
class Person {
    private String name;
    private int age;
    private String country;

    public Person(String name, int age, String country) {
        this.name = name;
        this.age = age;
        this.country = country;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getCountry() {