Java检查器-删除图标Java.lang.NullPointerException
我对跳棋有问题,跳跳不起作用,我不知道我能做些什么才能起作用,请帮助或给我一些提示:) 对于跳转,我给出了一小部分代码(只是以正确的方式为redIcon),因为我希望可读 用于线路Java检查器-删除图标Java.lang.NullPointerException,java,nullpointerexception,icons,Java,Nullpointerexception,Icons,我对跳棋有问题,跳跳不起作用,我不知道我能做些什么才能起作用,请帮助或给我一些提示:) 对于跳转,我给出了一小部分代码(只是以正确的方式为redIcon),因为我希望可读 用于线路 q=l.getIcon()I getjava.lang.NullPointerException 如果q=l.getIcon()给出null指针,那么l几乎肯定是null。通过一些计算,从JLabel.getComponentAt()派生l;如果“组件不包含位置”,则getComponentAt返回null。这是什么
q=l.getIcon()
I getjava.lang.NullPointerException
如果
q=l.getIcon()
给出null指针,那么l几乎肯定是null。通过一些计算,从JLabel.getComponentAt()派生l;如果“组件不包含位置”,则getComponentAt返回null。这是什么ballPressed==“redIcon”
和h==“greenIcon”
。是字符串相等比较。使用String#equals()
method.ballPressed是显示拖动图标的字符串(红色或绿色)。但我认为这对解决我的问题没有帮助。但您是对的,a应该使用String.eguals(),非常感谢:)这是否意味着它永远看不到蓝色圆圈内的组件??我不知道什么时候调用jump();我不知道JLabel和Component的值代表什么,更不用说它们对于引发异常的调用的实际值了。我不知道这是不是每次都这样,还是只是在某些情况下。将其放入调试器,在q=l.getIcon()上停止,然后查看x+69和y-69的值,并与游戏网格上的值(我也不知道)进行比较,然后查看代码试图从网格中获取组件的位置。
public class DnD extends JFrame {
private JPanel boardPane;
Icon z = null;
JLabel jlabel = new JLabel();
String k="";
String ballPressed="";
String p="";
public DnD(){
super("Checker");
icdim = new Dimension(greenIcon.getIconWidth() + 5, greenIcon.getIconHeight() + 5);
boardPane = new JPanel();
board = new JLabel[8][8];
dragged = new JLabel();
layers = getLayeredPane();
mouseHandler = new MouseInputAdapter() {
public void mouseReleased(MouseEvent mouseevent) {
JLabel jlabel = (JLabel)mouseevent.getSource();
Point point = jlabel.getLocation();
Point point1 = mouseevent.getPoint();
point.translate(point1.x, point1.y);
Component component = boardPane.getComponentAt(point);
JLabel jlabel1 = jlabel;
if(hasIcon(component))
if(allowedMove(jlabel, component, k))
jlabel1 =(JLabel)component;
else
try{
if(bicie(jlabel,component,k))
jlabel1 =(JLabel)component;
}catch (Exception e) {
e.printStackTrace();
}
jlabel1.setIcon(dragged.getIcon());
dragged.setVisible(false);
}
};
boolean jump(JLabel jlabel, Component component) {
int x = jlabel.getX();
int y = jlabel.getY();
int x2= component.getX();
int y2= component.getY();
String h="";
if(ballPressed=="redIcon" && player==true && y-y2==138 && x2-x==138){
Point point = new Point(x+69, y-69);
JLabel l= (JLabel) jlabel.getComponentAt(point);
try{
q=l.getIcon();
h = q.toString();
if(h=="greenIcon"){
player = false;
message.setText("Green");
getComponentAt(x2+69, y2+69).setBounds(0,0,0,0);
((JLabel) q).setIcon(null);
return true;
}
}else
return false;
}