使用另一个类的变量不会起作用。 我尝试从类图形发送并使用来自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;

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