我有一个 JTable 以这种格式显示内容:
Part Number Quantity Price
SD1131 7 1,000
SD6534 6 2,000
在同一帧上我有一个 JTextfield(txtNo)。我需要它,以便当用户在 JTextfield 上键入零件编号时,会在 JTable 上选择相应的记录。到目前为止,我只能根据行号选择记录,如下所示:
txtNo.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
int index1 = 0;
int index2 = 0;
try {
index1 = Integer.valueOf(txtNo.getText());
tbStore.setRowSelectionInterval(index2, index1);
} catch (Exception ae) {
ae.printStackTrace();
}
}
});
如何实现相同的方法来根据 JTextfield 的输入选择 JTable 行?
最佳答案
您需要在表中查找部件号与文本字段中输入的部件号相同的项目。采取的步骤:
- 阅读文本字段的内容
- 在
TableModel
中搜索匹配元素的索引 - 使用
convertRowIndexToView
方法将该索引转换为JTable
中相应的行索引(考虑排序、过滤等) - 使用
JTable
的setRowSelectionInterval
方法选择该行
作为替代方案,您可以使用 SwingX 项目的 JXTable
,它具有内置搜索功能。 SwingX 库还包含一个允许搜索此类 JXTable
的组件(请参阅 JXSearchPanel
和 JXSearchField
)
关于java - 根据 Jtextfield 输入从 Jtable 中选择一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777148/