JRadioButton无法在EventListener中强制转换为JButton

时间:2016-07-31 03:49:06

标签: java jframe actionlistener event-listener jradiobutton

我遇到一个问题,当我在代码中点击JRadioButton时,我的交互输出中会出现很多红线。该程序要求用户从问题“你最喜欢的水果是什么?”的四个答案中选择一个。以下是代码摘录:

   //constructor
    public Form(){

    EventListener listener = new EventListener();

    private class EventListener implements ActionListener{
    public void actionPerformed(ActionEvent e){

    if ((JButton)e.getSource() == fruitButton) {

    selectA = new JRadioButton("Apples");
    selectA.addActionListener(listener);
    selectB = new JRadioButton("Bananas");
    selectB.addActionListener(listener);
    selectC = new JRadioButton("Cherries");
    selectC.addActionListener(listener);
    selectD = new JRadioButton("Other");
    selectD.addActionListener(listener);

    if ((JButton)e.getSource() == quitButton) {
    System.exit(1);
    }

    if (selectAButton.isSelected() || selectBButton.isSelected() || selectCButton.isSelected() || selectDButton.isSelected()) {
    southPanel.add(submitButton);
    }
}}

然而,当我单击select JRadioButtons之一时运行代码时,我会在交互输出中获得大量红线,从以下开始:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JRadioButton cannot be cast to javax.swing.JButton

我在同一个事件监听器中有JButtons(例如,有一个退出按钮)但是无论我做什么,一旦选择了单选按钮,我似乎无法在底部添加提交按钮。请帮忙!

1 个答案:

答案 0 :(得分:0)

在投射之前检查事件源是否确实是JButton:

    if(e.getSource() instanceof JButton  && (JButton)e.getSource() == quitButton) {

            System.exit(1);
    }