gpt4 book ai didi

java - java swing 中的 JToggleButton 无法识别 isSelected() 方法?

转载 作者:行者123 更新时间:2023-12-02 03:12:40 26 4
gpt4 key购买 nike

我正在尝试在 java swing 中创建一个 gui,让用户使用切换按钮预订座位。我最初有默认的按钮颜色来测试单击事件是否有效。该按钮应变为红色表示已预订,变为黄色表示未预订。

这是我的actionPerformed方法

@Override
public void actionPerformed(ActionEvent e) {
GoldSeat seat = (GoldSeat)e.getSource();
if(seat.isSelected()){
seat.setBackground(Color.red);
}
else
{
seat.setBackground(Color.yellow);
}
}

GoldSeat 只是 JToggleButton 的派生类。由于某种原因,当我单击该按钮时,它不会变成红色(它变成默认的灰色),但当我再次单击它时,它会变成黄色。因此,按钮的“真”或“开”状态似乎不起作用,但“假”状态却起作用。我不知道为什么 isSelected() 无法正常运行。

知道如何解决这个问题吗?

编辑:我使用 Netbeans 的简单拖放界面将一个快速 JFrame 与一个 JToggleButton 组合在一起,生成了以下代码:

jToggleButton1 = new javax.swing.JToggleButton();
jToggleButton1.setText("jToggleButton1");
jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jToggleButton1ActionPerformed(evt);
}
});

以及 Action 事件:

private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                               
if(jToggleButton1.isSelected()){
jToggleButton1.setBackground(Color.red);
}else {
jToggleButton1.setBackground(Color.yellow);
}
}

这执行了我想要发生的事情,但我无法使用上面发布的派生类重新创建它。我自己的代码做错了什么吗?

最佳答案

当选择切换按钮时,LAF 会进行自定义绘制,因此设置背景没有效果。

您也许可以使用UIManager来控制此行为。在创建任何切换按钮之前,您可以尝试:

UIManager.put("ToggleButton.select", Color.RED);

这将更改所有切换按钮的属性。

编辑:

如果您只想为单个切换按钮提供此功能,您可以尝试(不确定它是否有效),例如:

Color select = UIManager.getColor("ToggleButton.select");
UIManager.put("ToggleButton.select", Color.RED);
JToggleButton button = new JToggleButton(...);
UIManager.put("ToggleButton.select", select);

关于java - java swing 中的 JToggleButton 无法识别 isSelected() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40811419/

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