JRadioButton无法转换为JButton

时间:2011-12-14 21:41:33

标签: java swing jbutton jradiobutton

我有actionPerformed()方法可以做两件事:打印出所选的单选按钮,并设置另一个类中标签的可见性。单击单选按钮时,无法转换为错误。

public void actionPerformed(ActionEvent e)
{
    System.out.println("Selected: " + e.getActionCommand());
    JButton hiddenBtn = (JButton) e.getSource();
    if (hiddenBtn == submit)
    {
        Class o = new Class();
        o.foo();
    }
    JButton close = (JButton) e.getSource();
    if (close == purchase)
    {
        System.exit(0);
    }
}

我在(JButton) e.getSource()收到了错误。

4 个答案:

答案 0 :(得分:4)

JRadioButton不会延长JButton。因此,您无法将其强制转换为JButton。但是,您可以投放到AbstractButton

java.lang.Object
  java.awt.Component
      java.awt.Container
          javax.swing.JComponent
              javax.swing.AbstractButton
                  javax.swing.JToggleButton
                      javax.swing.JRadioButton

答案 1 :(得分:2)

他们对JButton和JRadioButton的最小上限是AbstractButton。我认为,你可以去做你想做的事。

答案 2 :(得分:1)

除了关于是否有效的技术方面,从逻辑上考虑使用JButton强制转换JRadioButton的原因。两者的用法不同。

答案 3 :(得分:0)

AbstractButtonJButton使用ButtonGroup相关联,因为如果您将JRadioButton(s)添加到ButtonGroup,那么只有JRadioButton可以被选中,

我可以模拟此错误,无法转换为javax.swing.AbstractButton或无法从javax.swing.JButton

中的不正确使用渲染器强制转换为JTable