我试图在创建按钮时将其设置为enabled(false),当我选择jtable上的任何一行时,该按钮变为enabled(true)。
这里的逻辑很简单,但由于某些原因,它不太起作用,按钮永远不会进入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条答案
按热度按时间2w3rbyxf1#
swing gui的工作是将侦听器添加到事件中,然后响应侦听器中的状态更改。
在您创建组件的代码中,您似乎正在检查行选择状态,这永远不会起作用,因为它只检查一次状态,而且在用户有机会做出选择之前。相反,您需要在jtable上使用一个监听器,更具体地说,是一个listselectionlistener,您可以通过它添加到jtable的选择模型中
table.getSelectionModel().addListSelectionListener(...)
还要注意:可缩短为:
e、 g.类似于:
例如,如果按钮删除一行: