我真的不明白这个运行时错误:


  java.lang.ClassCastException:无法将javax.swing.Timer强制转换为
  javax.swing.JButton。


这是我的代码:

timer = new Timer(DELAY, new ButtonListener());

private JButton[] buttons = new JButton[3];
buttons[0] = new JButton("Circle");
buttons[1] = new JButton("Start");
buttons[2] = new JButton("Stop");

for(JButton button : buttons){
  button.addActionListener(new ButtonListener());
  controlPanel.add(button);
}

public void actionPerformed(ActionEvent e){
 JButton button = (JButton) e.getSource();

 if(button.getText().equals("Start")){
    timer.start();
 }else
  if(button.getText().equals("Stop")){
    timer.stop();
 }else
  if(button.getText().equals("Circle")){
    shapes[count] = new Circle();
    drawPanel.repaint();
    count++;
 }
}

最佳答案

摇摆计时器也可以触发动作事件。您只需要在代码中进行类检查:

public void actionPerformed(ActionEvent e){


    if (e.getSource() instanceof (JButton)) {

        JButton button = (JButton) e.getSource();

        if(button.getText().equals("Start")){
            timer.start();
        }else
        if(button.getText().equals("Stop")){
            timer.stop();
        }else
        if(button.getText().equals("Circle")){
            shapes[count] = new Circle();
            drawPanel.repaint();
            count++;
        }


    }else (e.getSource() instanceof (Timer)) {
        //deal with timer
    }
}

关于java - Java异常:java.lang.ClassCastException:javax.swing.Timer无法转换为javax.swing.JButton,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25747473/

10-13 09:46