如何设置只有选中 jtable 行才能单击 jbutton 的条件
How to make condition that jbutton can be clicked only if jtable row is selected
大家好,我需要你们的帮助,我是初学者。这是我的问题,我有 JTable,其中我有一些来自数据库的数据,其中包含以下列:Id、电影、类别和导演。使用代码的第 1 部分,我在 JTable 中选择该数据并将其发送到代码的第 2 部分,以便在其他 JFrame 中显示,以便编辑数据或从数据库中删除。我正在为我的项目使用 H2 数据库。现在,我的下一个问题是,是否有一个选项可以创建只有在 JTable 中选择行时才可单击的 JButton 条件,或者在 JTable 上未选择行时按下该 JButton 以接收错误消息,而不是转到第二个 JFrame。该代码现在可以正常工作,但如果不单击 JTable 上的任何内容,第二个 JFrame 中的字段将为空。
希望我说得足够清楚了。
第一部分
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
DefaultTableModel model=(DefaultTableModel)table.getModel();
int selectedRowIndex=table.getSelectedRow();
Id=(model.getValueAt(selectedRowIndex, 0).toString());
Movie=(model.getValueAt(selectedRowIndex, 1).toString());
Category=(model.getValueAt(selectedRowIndex, 2).toString());
Director=(model.getValueAt(selectedRowIndex, 3).toString());
}
});
第二部分
JButton btnDelete = new JButton("Delete");
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
EditDelete rmv=new EditDelete();
rmv.txtId.setText(Id);
rmv.txtMovie.setText(Movie);
rmv.txtCategory.setText(Category);
rmv.txtDirector.setText(Director);
rmv.setVisible(true);
frmMovieDatabase.dispose();
}
});
提前致谢!
JTable API 有一个获取所选行数的方法:getSelectedRowCount
,您可以在 JButton ActionListener 上使用它来检查是否可以执行删除。
JButton btnDelete = new JButton("Delete");
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (table.getSelectedRowCount() != 0){
// perform the deletion
}else{
// Throw an exception etc...
}
}
});
如果您对处理或检索所选值有任何疑问,我上面链接的页面可能有有用的资源。
大家好,我需要你们的帮助,我是初学者。这是我的问题,我有 JTable,其中我有一些来自数据库的数据,其中包含以下列:Id、电影、类别和导演。使用代码的第 1 部分,我在 JTable 中选择该数据并将其发送到代码的第 2 部分,以便在其他 JFrame 中显示,以便编辑数据或从数据库中删除。我正在为我的项目使用 H2 数据库。现在,我的下一个问题是,是否有一个选项可以创建只有在 JTable 中选择行时才可单击的 JButton 条件,或者在 JTable 上未选择行时按下该 JButton 以接收错误消息,而不是转到第二个 JFrame。该代码现在可以正常工作,但如果不单击 JTable 上的任何内容,第二个 JFrame 中的字段将为空。
希望我说得足够清楚了。
第一部分
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
DefaultTableModel model=(DefaultTableModel)table.getModel();
int selectedRowIndex=table.getSelectedRow();
Id=(model.getValueAt(selectedRowIndex, 0).toString());
Movie=(model.getValueAt(selectedRowIndex, 1).toString());
Category=(model.getValueAt(selectedRowIndex, 2).toString());
Director=(model.getValueAt(selectedRowIndex, 3).toString());
}
});
第二部分
JButton btnDelete = new JButton("Delete");
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
EditDelete rmv=new EditDelete();
rmv.txtId.setText(Id);
rmv.txtMovie.setText(Movie);
rmv.txtCategory.setText(Category);
rmv.txtDirector.setText(Director);
rmv.setVisible(true);
frmMovieDatabase.dispose();
}
});
提前致谢!
JTable API 有一个获取所选行数的方法:getSelectedRowCount
,您可以在 JButton ActionListener 上使用它来检查是否可以执行删除。
JButton btnDelete = new JButton("Delete");
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (table.getSelectedRowCount() != 0){
// perform the deletion
}else{
// Throw an exception etc...
}
}
});
如果您对处理或检索所选值有任何疑问,我上面链接的页面可能有有用的资源。