【发布时间】:2020-09-12 05:26:28
【问题描述】:
我的应用中有一个来自 MySQL 数据库的 jtable,如下图所示;
当我选择一行时,我会在左下角显示它的 ID 号,如上图所示。然后我会将该 ID 发送到某个地方,所以我需要它。但我也对我的表进行了动态搜索,我在这张图片中进行了搜索;
我过滤搜索以“Go”字母开头的那些,它显示 2 部电影并且它们的资格是正确的,但是当我选择一个时它没有给出正确的 id。如图所示,我选择 Good Time 电影,它的 id 是 7 但左下角是 1,如果我选择 Gora 电影,它的 id 是 8 但左下角是 2。但我想左下角显示电影的 id。
在我的代码中,我认为这些方法有助于理解我的错误(DefaultTableModel 模型;在类开始时初始化);
我的 Jdialog 的构造函数;
public JDialogClass(java.awt.Frame parent, boolean modal, int id) {
super(parent, modal);
initComponents();
this.kullaniciID = id;
model = (DefaultTableModel) myTable.getModel();
showTable();
}
showTable 方法;
public void showTable(){
model.setRowCount(0);
ArrayList<Programlar> programlar = new ArrayList<Programlar>();
programlar = islemler.programGetir();
if(programlar != null){
for(Programlar program:programlar){
Object[] tabloicerigi = {program.getId(),program.getAd(),program.getTur(),program.getTip(),program.getBolumsayisi(),
program.getUzunluk(),program.getPuan()};
model.addRow(tabloicerigi);
}
}
}
动态搜索方法;
public void dynamicSearch(String arama){
TableRowSorter<DefaultTableModel> tr = new TableRowSorter<DefaultTableModel>(model);
myTable.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter("(?i)" + arama, 1)); // 1 number here means search in 2nd column of table
}
动态搜索的KeyReleased方法;
private void searchKeyReleased(java.awt.event.KeyEvent evt) {
String arama = search.getText();
dynamicSearch(arama);
}
和选定的行方法;
private void myTableMouseClicked(java.awt.event.MouseEvent evt) {
int selectedRow = myTable.getSelectedRow();
int selectedId = (int) model.getValueAt(selectedRow, 0);
labelWhichShowsID.setText(String.valueOf(selectedId));
}
【问题讨论】:
标签: java swing user-interface jtable row