2011-04-03 40 views
1

您将如何处理正在扩展JPanel的自定义swing组件中的单击。我正在制作一款游戏,我想知道如何处理点击。具体在不同的线程比gui,和绘画?我将如何做到这一点,这里是我的代码:处理单击自定义Swing组件扩展JPanel?

package com.games.bubblecards; 

    import java.awt.Graphics; 
    import java.awt.Graphics2D; 

    import javax.swing.JPanel; 

    public class Canvas extends JPanel { 
     private static final long serialVersionUID = 1L; 

     public Canvas() { 
      super(); 
     } 

     public void paint(Graphics g) { 
      Graphics2D g2d = (Graphics2D)g; 
      g2d.drawString("Hello It Works", 10, 10); 
     } 

} 
+0

自定义绘画是通过覆盖paintComponent()方法而不是paint()方法来完成的。也不要使用Canvas作为类名,因为Canvas已经是一个AWT类,这会让人们感到困惑。 – camickr 2011-04-03 21:37:26

回答

2

可以通过添加一个MouseListener的到您的组件处理鼠标的点击,这是标准的Swing组件或扩展Swing组件自定义组件没有什么不同。必须在主Swing线程EDT上调用鼠标监听器的方法(并且默认情况下这是发生什么而不需要特殊代码),但是如果需要,监听器代码可以设置并启动后台线程。

相关问题