如何从JTable的多行中获取值并将其分配给变量



我有一个表(1列,多行(,其中包含一个图书名称列表和一个按钮。什么是正确的选择监听器,这样,如果我在表上选择多个行,当我按下按钮时,它会将所选行的值以串联格式分配到一个变量中?

例如,如果我从表中选择项目1到7,它将被分配给变量为:

String selectedBooks = item1 + item2 + item3...;

稍后我将使用selectedBooks的值进行sqlite查询。

谢谢你的帮助

使用table.getSelectedRows()将返回所选行的索引。然后使用table.getValueAt(row,column)方法从特定单元格中获取值。

一个很小的例子:

public class SelectedRowExample extends JFrame {
public SelectedRowExample() {
super("");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultTableModel model = new DefaultTableModel();
model.addColumn("Column");
model.addRow(new Object[] { "Hello" });
model.addRow(new Object[] { "Stack" });
model.addRow(new Object[] { "Overflow" });
JTable table = new JTable(model);
table.getSelectionModel().addListSelectionListener(e -> {
if (e.getValueIsAdjusting()) {
StringBuilder sb = new StringBuilder();
for (int row : table.getSelectedRows()) {
sb.append(table.getValueAt(row, 0));
}
System.out.println(sb.toString());
}
});
setLayout(new BorderLayout());
add(table);
setLocationByPlatform(true);
pack();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new SelectedRowExample().setVisible(true));
}
}

选择"Hello"打印:Hello

选择"你好"&"世界"打印:HelloWorld

选择所有行打印:HelloStackOverflow

最新更新