我寫了這個實施mouseinputlistener方法怎麼去上的MouseEvent一個JFrame
public void mouseDragged(MouseEvent e){
Pion c = (Pion)e.getSource();
c.setBounds(e.getX() + c.getX(), e.getY() + c.getY(), 30, 30);
}
,我在課堂上這是JFrame
的擴展實現內部發生的元素的引用,它包含一個網格佈局不同的組件:JPanel
和一些面板包含Jbutton將
我需要的是,讓我對發生事件是否是一個JPanel
或JButton
組件的引用的方法。
我嘗試用e.getSource,但顯然這是行不通的,代碼編譯,但我得到一個異常說「高原(即當前延伸JFrame
類)不能被澆鑄成介子(即一個類擴展爲JButton
)「每當我在組件上拖動鼠標
我試圖實現MouseInputListener擴展組件(Pion和其他)的每個類,但我需要在JFrame
比例上執行操作,不允許這樣做。
這裏的例外,我得到:
java.lang.ClassCastException: PlateauColorLine cannot be cast to javax.swing.JPanel
at PlateauColorLine.mouseDragged(PlateauColorLine.java:299)
at java.awt.Component.processMouseMotionEvent(Component.java:6564)
at java.awt.Component.processEvent(Component.java:6285)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Window.processEvent(Window.java:2022)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:77)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:77)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
at org.GNOME.Accessibility.AtkWrapper$5.dispatchEvent(AtkWrapper.java:697)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
`
你是否已經嘗試將對象轉換爲一個JPanel? – ZeusNet
是的,同樣的事情。 –
你可以請把異常堆棧跟蹤到這個問題 – ZeusNet