我有一个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行?
答案 0 :(得分:4)
您需要在表格中找到零件号等于文本字段中输入的零件号的项目。采取的步骤:
TableModel
JTable
方法将该索引转换为convertRowIndexToView
中的相应行索引(以考虑排序,过滤,...)setRowSelectionInterval
的{{1}}方法选择该行作为替代方案,您可以使用内置搜索功能的SwingX项目的JTable
。 SwingX库还包含一个允许搜索此类JXTable
的组件(请参阅JXTable
和JXSearchPanel
)
答案 1 :(得分:2)
您应该询问TableModel并找出哪一行包含您要查找的部件号:
for(int i=0;i<tbStore.getRowCount();i++) {
// 0 is for the column Part number
if(tbStore.getValueAt(i, 0).equals(Integer.valueOf(txtNo.getText())) {
tbStore.setRowSelectionInterval(i, i);
break;
}
}
警告:我没有测试过这段代码,但至少应该给你基本的想法。