单击两次以执行操作?
Two clicks for action to be performed?
我正在尝试创建默认禁用的 JButton
。当用户单击 JTable
中的一行时,我希望该按钮变为启用状态。问题是我有多个 JTables
,我需要在单击另一个 table 选项卡后再次禁用该按钮。
出于某种原因,需要单击两次 Jtable
选项卡才能禁用 Jbutton
。
以下是启用按钮的我的动作侦听器的两个示例:
jtblSunLessons.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
btnDelLesson.setEnabled(true);
}
});
}
});
jtblMonLessons.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
btnDelLesson.setEnabled(true);
}
});
}
});
这是我在单击另一个选项卡时禁用按钮的方法:
private void jTabbedPane1MouseClicked(java.awt.event.MouseEvent evt) {
btnDelLesson.setEnabled(false);
jtblSunLessons.getSelectionModel().clearSelection();
jtblMonLessons.getSelectionModel().clearSelection();
}
我试图找出问题所在,但找不到任何解决方案。我该如何解决这个问题?
侦听器的代码不正确。 invokeLater() 也是不需要的(感谢 camickr)。这是我更正的代码:
ListSelectionModel model2 = jtblSunLessons.getSelectionModel();
model2.addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e){
if(e.getValueIsAdjusting()){
return;
}
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
if(lsm.isSelectionEmpty()){
btnDelLesson.setEnabled(false);
}
else{
btnDelLesson.setEnabled(true);
}
}
});```
I disabled the button at the beginning of the code and reset the button to disabled inside the tabbed panes' actionPerformed. Also make sure to clearSelection for each table in the actionPerformed.
我正在尝试创建默认禁用的 JButton
。当用户单击 JTable
中的一行时,我希望该按钮变为启用状态。问题是我有多个 JTables
,我需要在单击另一个 table 选项卡后再次禁用该按钮。
出于某种原因,需要单击两次 Jtable
选项卡才能禁用 Jbutton
。
以下是启用按钮的我的动作侦听器的两个示例:
jtblSunLessons.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
btnDelLesson.setEnabled(true);
}
});
}
});
jtblMonLessons.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
btnDelLesson.setEnabled(true);
}
});
}
});
这是我在单击另一个选项卡时禁用按钮的方法:
private void jTabbedPane1MouseClicked(java.awt.event.MouseEvent evt) {
btnDelLesson.setEnabled(false);
jtblSunLessons.getSelectionModel().clearSelection();
jtblMonLessons.getSelectionModel().clearSelection();
}
我试图找出问题所在,但找不到任何解决方案。我该如何解决这个问题?
侦听器的代码不正确。 invokeLater() 也是不需要的(感谢 camickr)。这是我更正的代码:
ListSelectionModel model2 = jtblSunLessons.getSelectionModel();
model2.addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e){
if(e.getValueIsAdjusting()){
return;
}
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
if(lsm.isSelectionEmpty()){
btnDelLesson.setEnabled(false);
}
else{
btnDelLesson.setEnabled(true);
}
}
});```
I disabled the button at the beginning of the code and reset the button to disabled inside the tabbed panes' actionPerformed. Also make sure to clearSelection for each table in the actionPerformed.