java - 如何从 JTable 的多行中获取值并将其分配给变量?
问题描述
我有一个包含书名列表和按钮的表(1 列,多行)。什么是正确的选择侦听器,以便如果我在表上选择 MULTIPLE 行,当我按下按钮时,它会将所选行的值分配给连接格式的变量?
例如,如果我从表中选择项目 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”和“World”打印:HelloWorld
选择所有行打印:HelloStackOverflow
推荐阅读
- r - R在关键字之后提取特定单词
- flutter - 如何区分颤振中的复选框列表
- blogger - 有什么方法可以使用 www.blogname,blogspot.com 使我的 blogspot 页面可访问
- gatsby - 如何将用于生产的图像从资产复制到公共/资产
- python - 如何丰富与其他数据字段的 viur 关系
- voice - 谷歌语音助手从网络上拾取音频
- dynamics-crm - D365 中实体的托管组件是否存在在某些系统更新后发生更改的风险?
- python - 处理 csv 文件 - 这个简单的代码有什么问题?
- sql - 喜欢和计数使 sql server 处理器 100%
- reactjs - 为什么组件在反应钩子中不刷新?