2017-10-08 9 views
-1

別のクラスの変数を使用することはできません。 は私が送信し、ここでクラスのグラフィッククラスdrawingComponentsここと描くためにそれを使用する異なるクラスの変数を使用する

import javax.swing.*; 
 
import java.awt.*; 
 
import java.awt.event.*; 
 

 
public class graphics { 
 

 
\t public static void main(String[] args) { 
 
\t \t 
 
\t \t JFrame frame = new JFrame(); 
 
\t \t frame.setSize(640,480); 
 
\t \t frame.setTitle("graphics"); 
 
\t \t frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 
\t \t frame.setVisible(true); 
 
\t \t 
 
\t \t drawingComponents dc = new drawingComponents(); 
 
\t \t frame.add(dc); 
 

 
\t \t frame.addMouseListener(new MouseAdapter() { 
 
\t \t \t @Override 
 
\t \t \t public void mousePressed(MouseEvent e) { 
 
\t \t \t  double mx = MouseInfo.getPointerInfo().getLocation().getX(); 
 
\t \t \t  double my = MouseInfo.getPointerInfo().getLocation().getY(); 
 
\t \t \t  System.out.println("Mouse x " + mx + " y " + my); \t 
 
\t \t \t }; 
 
\t \t }); \t \t 
 
\t } 
 
}

からMXとのMouseListener()からを使用しようとしていますマウスの位置で。

import javax.swing.*; 
 
import java.awt.*; 
 

 
public class drawingComponents extends JComponent{ 
 

 
\t public void paintComponent (Graphics g) { 
 
      Graphics2D g2 = (Graphics2D) g; 
 
      graphics g3 = new graphics(); 
 
\t System.out.println(g3.mx, g3.my); 
 
\t } \t 
 
}

私はMXのクラスグラフィックを得ることができますが、クラスdrawingComponentsでをそれを使用することは私にmx/my cannot be resolved or is not a fieldを教えてくれます。 クラスdrawingComponentsでは、

double mx; 
 
double my;

としてそれを宣言すると、何も変更されません。

+0

これはJava **のようには見えません** Javascriptではなく、まったく別のプログラミング言語です。 –

+0

私の悪い@ greg-449 – antonio

答えて

0

変数はローカルであり、他のクラスからアクセスできないだけでなく、グラフィックスクラスの外部メソッドからアクセスできません。あなたは、あなたがdrawingComponentsクラスを作成するときにそれらを引数として渡すべきです。これが気に入らなければ、後で追加するために、drawingComponentsにメソッドを設定することができます。変数の変数をグラフィックスの変数にしてから、他のクラスのgetterメソッドを使って変数を取得することもできます。最後に(これは悪い習慣では推奨されません)、変数をpublicとstaticにすることができます。

幸運。

関連する問題