gpt4 book ai didi

java - 启用/禁用 AWT 按钮

转载 作者:行者123 更新时间:2023-11-30 12:00:39 26 4
gpt4 key购买 nike

我写了下面的一段代码,它应该返回一个带有一个复选框和一个按钮的面板。这个想法是只有当复选框被选中时才应该启用按钮。它有效,这意味着如果未选中复选框,而我尝试按下按钮,则什么也不会发生。但是,按钮的视觉外观是错误的,当它应该显示为启用时却显示为禁用,反之亦然。知道我的代码有什么问题吗?提前致谢

public Panel createCalibrationPanel(final ImagePlus imp) {
final Panel panel = new Panel();
panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS));
panel.add(Box.createHorizontalStrut(20));
final Checkbox checkbox = new Checkbox(
"Use image spatial calibration for q scale", true);
final Button button = new Button("Set scale");
useCalibration = checkbox.getState();
button.setEnabled(checkbox.getState());
panel.add(checkbox);
panel.add(button);
checkbox.addItemListener(new ItemListener() {
public void itemStateChanged(final ItemEvent e) {
boolean state = checkbox.getState();
setUseCalibration(state);
button.setEnabled(state);
}
});
button.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
imp.unlock();
IJ.run(imp, "Set Scale...", "");
imp.lock();
}
});
return panel;
}

最佳答案

控制按钮的逻辑是正确的。我修改了您的示例代码,它按照您的描述工作。 (这是我使用的版本:http://pastebin.com/f6cd6cfac,在 Sun Java 6 上测试)。

但是,还有一些您调用的其他方法,但您没有向我们展示:setUseCalibration、imp.unlock 和 IJ.run。您确定他们返回正确吗?您应该从代码中删除外部调用,并一次一次将它们添加回去,直到找到导致问题的原因。

关于java - 启用/禁用 AWT 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1775421/

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