gpt4 book ai didi

Java - 在不禁用 jCheckBox 的情况下使 jCheckBox 不可选中,反之亦然

转载 作者:行者123 更新时间:2023-11-30 08:23:34 27 4
gpt4 key购买 nike

我正在为我的类(class)做一个项目,我有以下情况:它是一个 JDialog,它在构造函数上接收一个 Object 以使用它。对象“Album”有两个属性,根据 MySQL boolean 值可以是 0 或 1。当窗口初始化时,它会检查这两个属性的状态。如果其中之一设置为 1,则相应的 jCheckBox 被选中。否则(情况 0)它保持未选中状态,与第二个属性相同。

我想要的是让这两个 jCheckBoxes 在不禁用它们的情况下不可编辑,也就是说,它看起来仍然是“启用”的,但是如果你点击它就不会发生任何事情,因为我不希望它们看起来是灰色的作为残疾人。

我尝试了一些事情,例如创建一个不断检查复选框状态的线程,如果它不是 Album 属性上的设置,它会将其更改为正确的状态,但它不起作用,您可以选中或取消选中根据需要选中两个复选框。

我能做什么?

这是我目前所拥有的。

public class JDVerAlbum extends javax.swing.JDialog {

/**
* Creates new form JDVerAlbum
*/
Album a;
/**
*
* @deprecated
*/
public JDVerAlbum(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}

public JDVerAlbum(java.awt.Frame parent, boolean modal, Album a) {
super(parent, modal);
this.a=a;
initComponents();
inicializar();
}

private void inicializar(){
Statement stm = Controlador.connect();
String s = null;
try {
ResultSet rs = stm.executeQuery("SELECT grupo.nombre from album, grupo where album.nombre='"+a.getName()+"' and album.idgrupo=grupo.id;");
rs.next();
s = rs.getString(1);
} catch (SQLException ex) {
Logger.getLogger(JDVerAlbum.class.getName()).log(Level.SEVERE, null, ex);
}

jLabelAlbum.setText(a.getName()+" - "+s);
this.setTitle("Quaver Records - Ver álbum - "+jLabelAlbum.getText());
jTextFieldAño.setText(""+a.getReleaseYear());
jTextFieldTipo.setText(""+a.getType());
if(a.getPhysicalSales()==1){
jCheckBoxFisica.setSelected(true);
}
if(a.getDigitalSales()==1){
jCheckBoxDigital.setSelected(true);
}
}

最佳答案

您可以删除 JCheckBox 具有的赋予它此行为的 MouseListener:

 JCheckBox checkBox = new JCheckBox("Check Box");
EventListener[] listeners = checkBox.getListeners(MouseListener.class);
for (EventListener eventListener : listeners) {
checkBox.removeMouseListener((MouseListener) eventListener);
}

还可以考虑将 JCheckBox 的 focusable 属性设置为 false:

checkBox.setFocusable(false);

这可以防止用户使用 Tab 键切换到复选框,然后使用空格键切换其状态。

关于Java - 在不禁用 jCheckBox 的情况下使 jCheckBox 不可选中,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23584898/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com