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

java swing中的JToggleButton不识别isSelected()方法?,java,swing,jtogglebutton,Java,Swing,Jtogglebutton,我试图在JavaSwing中创建一个gui,允许用户使用切换按钮预订座位。我最初使用默认按钮颜色来测试单击事件是否有效。按钮应变为红色表示其已预订,变为黄色表示其未预订 这是我的方法 @Override public void actionPerformed(ActionEvent e) { GoldSeat seat = (GoldSeat)e.getSource(); if(seat.isSelected()){ seat.setBackground(Colo

我试图在JavaSwing中创建一个gui,允许用户使用切换按钮预订座位。我最初使用默认按钮颜色来测试单击事件是否有效。按钮应变为红色表示其已预订,变为黄色表示其未预订

这是我的方法

@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的简单拖放界面创建了一个带有一个JToggleButton的快速JFrame,该界面生成以下代码:

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);
        }
    });
以及行动活动:

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);

当选择切换按钮时,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);

我真的需要它来处理单个按钮。我制作了一个带有一个JToggleButton的快速JFrame,并设法让它按我所希望的那样工作,但由于某些原因,它在我的主代码中无法工作。编辑:刚刚看到你的编辑。我来试试看怎么样goes@MarkO'兔子,请参见编辑。如果你有更多的问题,那就发布你的展示你所尝试的。这个解决方案最终对我有效!谢谢你的帮助!我真的需要它来处理单个按钮。我制作了一个带有一个JToggleButton的快速JFrame,并设法让它按我所希望的那样工作,但由于某些原因,它在我的主代码中无法工作。编辑:刚刚看到你的编辑。我来试试看怎么样goes@MarkO'兔子,请参见编辑。如果你有更多的问题,那就发布你的展示你所尝试的。这个解决方案最终对我有效!谢谢你的帮助<代码>我自己的代码是否有问题?-可能没有问题,但不同。我已经建议这是一个LAF问题。也许这两个帧使用的是不同的LAF?在任何情况下,我们都无法根据几行随机代码判断您做错了什么。
我自己的代码是否做错了什么?
-可能没有错,但不同。我已经建议这是一个LAF问题。也许这两个帧使用的是不同的LAF?在任何情况下,我们都无法根据几行随机代码判断您做错了什么。