在不同的类中使用变量

时间:2017-10-08 15:20:48

标签: java eclipse

使用另一个类的变量不会起作用。 我尝试从类图形发送并使用来自MouseListener()的 mx my



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

public class graphics {

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

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




类drawingComponents 这里使用它来绘制鼠标的位置。



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

public class drawingComponents extends JComponent{

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




我可以在类图形中获得 mx my ,但在类drawingComponents 中使用它会告诉我mx/my cannot be resolved or is not a field。在类drawingComponents 中,将其声明为



double mx;
double my;




不会改变任何事情。

1 个答案:

答案 0 :(得分:1)

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

祝你好运。