java该如何获取表格指定数据的行?

怎样才能在java输出时在文本框输入其中的一个数据并点击按钮文本域中出现整行数据,如

姓名 岁数 爱好
小明 1 睡觉
大明 11 逗小明玩


在文本框中输入大明并点击按钮文本框中显示
大明 11 逗小明玩

参考GPT和自己的思路:

要实现在 Java 中获取表格中指定数据的行,可以使用 Java Swing 框架中的 JTable 组件。具体的做法是,首先创建一个 JTable 对象,并将表格数据载入该对象。然后获取文本框中输入的字符串,并遍历表格数据,搜索匹配的数据行,找到匹配的行后将该行的数据输出到文本框即可。

下面是一份示例代码,可以供你参考:

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TableTest extends JFrame {
    private JTable table;
    private JTextField textField;
    private JTextArea textArea;

    public TableTest() {
        // 创建表格数据模型
        DefaultTableModel model = new DefaultTableModel(new Object[][]{
                {"小明", 1, "睡觉"},
                {"大明", 11, "逗小明玩"}
        }, new String[]{"姓名", "岁数", "爱好"});

        // 创建表格并载入数据模型
        table = new JTable(model);

        // 创建文本框和按钮
        textField = new JTextField(10);
        JButton button = new JButton("搜索");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 获取文本框中的输入
                String search = textField.getText();

                // 遍历表格数据,查找匹配的行
                int index = -1;
                for (int row = 0; row < table.getRowCount(); row++) {
                    Object value = table.getValueAt(row, 0);
                    if (value != null && value.toString().equals(search)) {
                        index = row;
                        break;
                    }
                }

                // 输出匹配的数据行
                if (index != -1) {
                    Object[] rowData = new Object[table.getColumnCount()];
                    for (int col = 0; col < table.getColumnCount(); col++) {
                        rowData[col] = table.getValueAt(index, col);
                    }
                    textArea.setText(String.join(" ", rowData));
                } else {
                    textArea.setText("未找到指定数据行");
                }
            }
        });

        // 创建文本域并设置为只读
        textArea = new JTextArea(5, 20);
        textArea.setEditable(false);

        // 创建布局并添加组件
        JPanel panel = new JPanel();
        panel.add(new JLabel("搜索:"));
        panel.add(textField);
        panel.add(button);

        Container contentPane = getContentPane();
        contentPane.setLayout(new BorderLayout());
        contentPane.add(panel, BorderLayout.NORTH);
        contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
        contentPane.add(new JScrollPane(textArea), BorderLayout.SOUTH);

        // 设置窗口大小和其他属性
        setSize(new Dimension(500, 300));
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

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

在这份示例代码中,我们首先创建了一个包含两行数据的表格,并使用 JTable 组件将其载入。然后在界面上添加了一个文本框和一个按钮,用于输入和搜索指定的数据行。当用户点击搜索按钮时,我们遍历表格数据,并寻找匹配的行,找到匹配的行时将该行的数据输出到文本域中。如果未找到匹配的行,则输出一个提示消息。最后将表格、文本框和文本域组合在一起,并显示在界面上。

你把代码里报错那句改成

 textArea.setText(Arrays.toString(rowData));

文件开始最上面加一句

import java.util.Arrays;