java - 滑动拼图,开关图标

标签 java arrays image icons

我们正在使用 Eclipse 用 Ja​​va 制作幻灯片拼图。我们在按钮上放置了图标。现在我们想要将我们点击的按钮的 Icon 与所谓的“空按钮”的图标切换。

int location =(new Integer(e.getActionCommand())).intValue(); //The buttons are in an Array:  "Pieces[]", Location: index
if (Bounds(location,InvisibleButton)) {
//The method Bounds, is one we made to see if the two pieces are next to eachother,
Icon temp;  //Temporar ButtonIcon
temp=Knop[location].getIcon(); 
Pieces[location].setIcon(Piece[InvisibleButton].getIcon()); 
Pieces[InvisibleButton].setIcon(temp); 
InvisibleButton = location; 
}

为什么图标不交换位置?

错误:

只有当我们点击空棋子旁边的棋子时才会出错,我们可以单击所有其他棋子。该代码可以工作,但是当我们想要切换图像时它会中断。 这是错误代码:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Mozaiq.Schuifpuzzelpaneel.actionPerformed(Schuifpuzzelpaneel.java:93)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at     javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6382)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6147)
at java.awt.Container.processEvent(Container.java:2083)
at java.awt.Component.dispatchEventImpl(Component.java:4744)
at java.awt.Container.dispatchEventImpl(Container.java:2141)
at java.awt.Component.dispatchEvent(Component.java:4572)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4619)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4280)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4210)
at java.awt.Container.dispatchEventImpl(Container.java:2127)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4572)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:710)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:669)
at java.awt.EventQueue$2.run(EventQueue.java:667)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:683)
at java.awt.EventQueue$3.run(EventQueue.java:681)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:680)
at     java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at     java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

最佳答案

快速猜测一下:调用 repaint() 方法。

可能是这样的:

Pieces[location].repaint();

在你的函数结束时。

关于java - 滑动拼图,开关图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16253214/

相关文章:

带有直方图的 C# 等级数组

objective-c - NSImage 对比 CIImage 对比 CGImage?

html - 在屏幕上拉伸(stretch) 1 个 div 中包含的图像

java - 在文本文件的开头添加行 - Java

c# - 如何将数组值添加到组合框中?

java - 实例化特定 Class<T> 时正确处理转换

C++ 将动态大小的二维数组传递给函数

html - 使用 CSS 居中图像

javascript - 多个 Rhino (java) 线程操作同一个文件

java.net.SocketException - 尝试获取 XML