Java异常:Java.lang.ClassCastException:javax.swing.Timer不能强制转换为javax.swing.JButton
我真的不理解这个运行时错误: java.lang.ClassCastException:无法将javax.swing.Timer强制转换为 javax.swing.JButton 这是我的密码:Java异常:Java.lang.ClassCastException:javax.swing.Timer不能强制转换为javax.swing.JButton,java,swing,classcastexception,Java,Swing,Classcastexception,我真的不理解这个运行时错误: 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 JButto
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++;
}
}
下一行
JButton button=(JButton)e.getSource()中的问题代码>在actionPerformed()方法中。因为您将ButtonListener
添加到JButton
和Timer
。您可以为它们使用不同的侦听器,也可以验证e.getSource()的类型代码>在actionPerformed()
下一行JButton按钮=(JButton)e.getSource()中您的问题代码>在actionPerformed()方法中。因为您将ButtonListener
添加到JButton
和Timer
。您可以为它们使用不同的侦听器,也可以验证e.getSource()的类型在actionPerformed()中的code>
摆动计时器也可以触发动作事件。您只需在代码中执行类检查:
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
}
}
摆动计时器也可以触发动作事件。您只需在代码中执行类检查:
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
}
}
在actionPerformed方法中,检查e.getSource()
是否是JButton的实例
public void actionPerformed(ActionEvent e){
if(e.getSource() instanceof JButton){
// your button action logic
}
}
不要对JButtons
和JTimer
使用相同的侦听器类。为计时器创建一个单独的侦听器。在actionPerformed方法中,检查e.getSource()
是否是JButton的实例
public void actionPerformed(ActionEvent e){
if(e.getSource() instanceof JButton){
// your button action logic
}
}
不要对JButtons
和JTimer
使用相同的侦听器类。为计时器创建一个单独的侦听器。放入所有相关代码。什么是e?这里似乎是Exception
:JButton按钮=(JButton)e.getSource()代码>。显示当actionPerformed方法被调用时如何创建计时器?下面是创建计时器的代码:timer=new timer(10,new ButtonListener());为什么要将同一个侦听器添加到计时器和按钮中。为每一个创建不同的。计时器不是按钮。反之亦然。源当你添加它时,计时器是计时器,而不是按钮输入所有相关代码。什么是e?这里似乎是Exception
:JButton按钮=(JButton)e.getSource()代码>。显示当actionPerformed方法被调用时如何创建计时器?下面是创建计时器的代码:timer=new timer(10,new ButtonListener());为什么要将同一个侦听器添加到计时器和按钮中。为每一个创建不同的。计时器不是按钮。反之亦然。添加时的源计时器是计时器,而不是按钮