读书人

java.lang.ClassCastException是什么东

发布时间: 2012-07-15 20:11:40 作者: rapoo

java.lang.ClassCastException是什么错误
package gui;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.AncestorListener;
import javax.swing.plaf.basic.BasicButtonListener;

public class jsqFrame extends JFrame implements ActionListener {

private static final long serialVersionUID = -2703894706495187706L;
private boolean operated, equaled;
private double storedNumber;
private char lastOperator;
private JTextField out;
private JButton add;
private JButton jian;
private JButton cheng;
private JButton chu;
private JButton dy;
private JButton[] numbers;
private JButton clear;
public jsqFrame() {



operated = false;
equaled = false;
storedNumber = 0;
lastOperator = '?';
out = new JTextField("0");
out.setEditable(false);
numbers = new JButton[10];
int i = 0;
numbers[i] = new JButton("" + i);
this.setTitle("计算器");
this.setSize(300, 200);
this.setLocation(400, 300);
out = new JTextField(20);
clear = new JButton("c");
add = new JButton("+");
jian = new JButton("-");
cheng = new JButton("*");
chu = new JButton("/");
dy = new JButton("=");
out.setEditable(false);
equaled = false;


ActionListener d = (ActionListener) new BasicButtonListener(null);


JPanel north = new JPanel();
JPanel center = new JPanel();
north.add(out);
north.add(clear);
GridLayout gl = new GridLayout(4,4);
center.setLayout(gl);
for(int i1= 1;i1<4;i1++)
{
ActionListener a = (ActionListener) new BasicButtonListener(null);
JButton btn = new JButton(""+i1);
center.add(btn);
btn.addActionListener(a);
}

center.add(add);
for(int i1 = 4;i1<7;i1++)
{
AncestorListener b = (AncestorListener) new BasicButtonListener(null);
JButton btn = new JButton(""+i1);
center.add(btn);
btn.addAncestorListener(b);
}
center.add(jian);
for(int i1 = 7;i1<10;i1++)
{
JButton btn = new JButton(""+i1);
ActionListener c = (ActionListener) new BasicButtonListener(null);
center.add(btn);
btn.addActionListener(c);
}
center.add(cheng);
JButton zero = new JButton(""+0);
zero.addActionListener(d);
JButton temp = new JButton("");
center.add(zero);
center.add(temp);
center.add(dy);
center.add(chu);
this.add(north, BorderLayout.NORTH);
this.add(center,BorderLayout.CENTER);


}


public void actionPerformed(ActionEvent e) {
JButton btn = (JButton) e.getSource();
if (btn == clear) {
out.setText("0");

storedNumber = 0;
lastOperator = '?';
} else if (btn == dy) {
operate1('=');
equaled = true;
} else if (btn == add) {
operate1('+');
equaled = false;
} else if (btn == jian) {
operate1('-');
equaled = false;
} else if (btn == cheng) {
operate1('*');
equaled = false;
} else if (btn == chu) {
operate1('/');
equaled = false;
}



if (!equaled);
storedNumber = 0;
JButton btn4 = null;
for (int i = 0; i < 10; i++)
if (btn4 == numbers[i]) {
if (out.getText().equals("0"))
out.setText("" + i);
else if (!operated)
out.setText(out.getText() + i);
else {
out.setText("" + i);
operated = false;
}
}


}


private void operate1(char operator) {


double currentNumber = Double.valueOf(out.getText())
.doubleValue();
if (lastOperator == '?')
storedNumber = currentNumber;
else if (lastOperator == '+')
storedNumber += currentNumber;
else if (lastOperator == '-')
storedNumber -= currentNumber;
else if (lastOperator == '*')
storedNumber *= currentNumber;
else if (lastOperator == '/')
storedNumber /= currentNumber;

else if (lastOperator == '=' && equaled)
storedNumber = currentNumber;
out.setText("" + storedNumber);
operated = true;
lastOperator = operator;
}
public static void main (String[] args) {


jsqFrame frame = new jsqFrame();
frame.setVisible(true);


}}





一运行就会出现Exception in thread "main" java.lang.ClassCastException: javax.swing.plaf.basic.BasicButtonListener cannot be cast to java.awt.event.ActionListener
at gui.jsqFrame.<init>(jsqFrame.java:55)
at gui.jsqFrame.main(jsqFrame.java:171)

怎么才能解决这个问题?

[解决办法]
javax.swing.plaf.basic.BasicButtonListener cannot be cast to java.awt.event.ActionListener
错误很明了

类型转换异常

[解决办法]
类型转换异常,具体代码太长了,自己根据错误提示去找找,其实改代码也是一种能力的提升
[解决办法]
ActionListener a = (ActionListener) new BasicButtonListener(null);

不能够强转
[解决办法]
类型转换错误,对症下药,方可痊愈~~

读书人网 >Java面试

热点推荐