Java 使用JLabel和JButton获取强制转换错误
我正在做一个纸牌游戏,玩家可以点击抽牌按钮抽一张牌,也可以玩一张牌。 问题是,每当我点击draw时,它都会给我带来施法错误,但我对Java 使用JLabel和JButton获取强制转换错误,java,swing,jbutton,jlabel,classcastexception,Java,Swing,Jbutton,Jlabel,Classcastexception,我正在做一个纸牌游戏,玩家可以点击抽牌按钮抽一张牌,也可以玩一张牌。 问题是,每当我点击draw时,它都会给我带来施法错误,但我对JLabel的施法只有在他们点击一张卡时才会出现 错误只发生在我点击绘图时 public void mousePressed(MouseEvent arg0) { double x = MouseInfo.getPointerInfo().getLocation().getX(); double y = MouseInfo.g
JLabel
的施法只有在他们点击一张卡时才会出现
错误只发生在我点击绘图时
public void mousePressed(MouseEvent arg0)
{
double x = MouseInfo.getPointerInfo().getLocation().getX();
double y = MouseInfo.getPointerInfo().getLocation().getY();
if(x>=draw.getX()&&x<=draw.getX()+draw.getWidth() && y>=draw.getY() && y<=draw.getY()+draw.getHeight())
{
//change later so anonymous
say("\nPlayer "+UNO.getturn()+" drew a "+UNO.getdeckontop());
UNO.draw();
UNO.nextturn();
smalllennie();
return;
}
else
{
JLabel label = (JLabel)arg0.getSource();
int index = currentdeck.indexOf(label);
你为什么要用
MouseListener
作为JButton
?您应该使用ActionListener
,因为它们已经被设计为在单击时触发动作事件。另外,正如其他人在上一个问题上所说的那样,您可以通过执行arg0.getX()
/arg0.getXOnScreen()
和arg0.getY()
/arg0.getYOnScreen()
而不是使用MouseInfo
,来获得MouseEvent的x和y坐标。好的,谢谢,我会试试看!您在添加侦听器时太粗心了。如果侦听器希望源是JLabel,则仅将侦听器添加到JLabel。同样,如果您的侦听器希望源是JButton,则只将其添加到JButton。是的,按钮通常应该优先使用ActionListener而不是MouseListener(尽管有一些例外)。是的,我现在明白了。非常感谢你们!提问时,请添加或。
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
javax.swing.JButton cannot be cast to javax.swing.JLabel
at Graphic.mousePressed(Graphic.java:146)