java JButton在JTable中选择行时不重新启用
我试图在创建按钮时将其设置为enabled(假),当我选择Jtable上的任何一行时,该按钮变为enabled(真)
这里的逻辑非常简单,但由于某种原因,它不太起作用,按钮永远不会进入启用状态(true)
JButton btnIniciarReparacin = new JButton("INICIAR REPARACI\u00D3N");
btnIniciarReparacin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tiempoStart = (int) (System.currentTimeMillis() / 1000L);
btnIniciarReparacin.setEnabled(false);
}
});
btnIniciarReparacin.setFont(new Font("SansSerif", Font.BOLD, 13));
btnIniciarReparacin.setBackground(new Color(231, 111, 81));
btnIniciarReparacin.setBounds(129, 625, 254, 50);
frame.getContentPane().add(btnIniciarReparacin);
int row = table.getSelectedRow();
//Comprobamos si hemos cogido algo de la tabla y si los botones están encendidos
if (table.isRowSelected(row)) {
btnIniciarReparacin.setEnabled(true);
} else {
btnIniciarReparacin.setEnabled(false);
}
# 1 楼答案
Swing GUI的工作是向事件添加侦听器,然后响应侦听器中的状态更改
在创建组件的代码中,您似乎正在检查行选择状态,这永远不会起作用,因为它只检查一次状态,而且在用户有机会进行选择之前。相反,您需要在JTable上使用一个侦听器,更具体地说,是一个ListSelectionListener,您可以通过
table.getSelectionModel().addListSelectionListener(...)
将它添加到JTable的选择模型中还请注意:
可以缩短为:
例如:
例如,如果按钮删除一行: