在不同的类中使用变量

问题描述:

使用另一个类中的变量将不起作用。 我试图发送和从级图形这里在不同的类中使用变量

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 } 
 
}

类drawingComponents这里,并用它来绘制使用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

您的变量是本地的,不仅不能被其他类访问,而且它们也不能被图形类中的外部方法访问。当您创建drawingComponents类时,您应该将它们作为参数传递。如果你不喜欢这样,你可以在drawingComponents中设置一个方法来稍后添加它们。您也可以为图形创建变量类变量,然后为其他类获取它们的getter方法。最后(并且不推荐这样做,因为这是不好的做法),你可以使变量公开和静态。

祝你好运。