2013-07-18 20 views
1

我一直在導入更多的軟件包,但遇到包含鼠標事件的所有方法都出現相同的「錯誤:無法找到符號」。我想我缺少一個需要擴展或實現的包或類,但是我找不到哪一個。有任何想法嗎?鼠標事件「無法找到符號」錯誤的解決方案

import java.awt.event.*; 
import java.awt.BorderLayout; 
import java.awt.Button; 
import java.awt.Component; 
import java.awt.Frame; 
import java.awt.TextArea; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.*; 

public class t1 implements MouseListener 
{ 
    public static void main(String[] args) 
    { 
    // Create frame with title 
     Frame frame = new Frame("Click Counter Project"); 

     // Create a component to add to the frame 
     final TextArea textArea = new TextArea("Click"); 
    } 
    public void mousePressed(MouseEvent event) 
    { 
      textArea.setText("Mouse pressed. x = "+ event.getX() + " y = " +   event.getY()); 
    } 
    public void mouseReleased(MouseEvent event) 
    { 
     textArea.setText("Mouse released. x = "+ event.getX() + " y = " + event.getY()); 
} 
public void mouseClicked(MouseEvent event) 
{ 
    textArea.setText("Mouse clicked. x = "+ event.getX() + " y = " + event.getY()); 
    } 
    public void mouseEntered(MouseEvent event) 
    { 
     textArea.setText("Mouse entered. x = "+ event.getX() + " y = " + event.getY()); 
    } 
    public void mouseExited(MouseEvent event) 
    { 
      textArea.setText("Mouse exited. x = "+ event.getX() + " y = " + event.getY()); 
    } 
    public void t1() 
    { 
     frame.add(textArea, BorderLayout.NORTH); 
      int width = 300; 
      int height = 300; 
      frame.setSize(width, height); 
      frame.setVisible(true); 
    } 
} 

回答

1

所有必需的軟件包和文件已被導入。有一個「無法找到符號」錯誤的原因是,因爲「textArea」字段和「框架」變量是本地的。將它們聲明爲靜態類變量,如下面的代碼所示,然後在main方法中初始化它們,並且清除找不到符號錯誤。

的代碼應該是這樣的: -

public class t1 implements MouseListener 
    { 
    static TextArea textArea; 
    static Frame frame; 
     public static void main(String[] args) 
     { 
     // Create frame with title 
      frame = new Frame("Click Counter Project"); 

      // Create a component to add to the frame 
      textArea = new TextArea("Click"); 
      t1 clickCount= new t1(); 
     } 
    ... 
t1() 
    { 
     frame.add(textArea, BorderLayout.NORTH); 
      int width = 300; 
      int height = 300; 
      frame.setSize(width, height); 
      frame.addMouseListener(this); 
      frame.setVisible(true); 
    } 
    } 
+0

已清除錯誤,但現在程序在執行時什麼也不做。任何想法爲什麼? –

+0

請嘗試以上修改的代碼從您的給定的一個來看你想要的結果。這是因爲您已經使用t1()方法作爲局部變量,而應該是類t1的構造函數的名稱。 –

+0

謝謝!這完美的作品! –

1

你的變量textArea被聲明爲內main一個局部變量,所以它的出裏面的其他方法的範圍。

聲明textArea在類內但在所有方法之外 - 作爲實例變量。那麼它將在整個班級的範圍內,包括你的所有方法。

public class t1 implements MouseListener 
{ 
    // Here! 
    final TextArea textArea = new TextArea("Click"); 

    public static void main(String[] args) 
    { 
     // ... 

您將需要對frame變量做同樣的事情。

+0

我把什麼應在主呢?它是空的,當我嘗試運行它時,沒有任何反應。 –

+0

您需要調用'Frame'對象上的方法才能讓它顯示出來。你可以在網上找到這些教程。 – rgettman

相關問題