如何从 JTable 的多行中获取值并将其分配给变量?
How do you take values from multiple row from a JTable and assign it to a variable?
我有一个 table(1 列,多行),其中包含一个书名列表和一个按钮。
什么是正确的 selection 侦听器,这样如果我 select 多行 table,它会将 selected 行的值分配给串联格式的变量当我按下按钮时?
例如,如果我 select 来自 table 的项目 1 到 7,它将被分配给变量:
String selectedBooks = item1 + item2 + item3...;
稍后我将使用 selectedBooks
的值进行 sqlite 查询。
感谢您的帮助
使用table.getSelectedRows()
将return 选定行的索引。然后使用 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
选择 "Hello" & "World" 打印:HelloWorld
选择所有行打印:HelloWhosebug
我有一个 table(1 列,多行),其中包含一个书名列表和一个按钮。 什么是正确的 selection 侦听器,这样如果我 select 多行 table,它会将 selected 行的值分配给串联格式的变量当我按下按钮时?
例如,如果我 select 来自 table 的项目 1 到 7,它将被分配给变量:
String selectedBooks = item1 + item2 + item3...;
稍后我将使用 selectedBooks
的值进行 sqlite 查询。
感谢您的帮助
使用table.getSelectedRows()
将return 选定行的索引。然后使用 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
选择 "Hello" & "World" 打印:HelloWorld
选择所有行打印:HelloWhosebug