在不同的类中使用变量
问题描述:
使用另一个类中的变量将不起作用。 我试图发送和从级图形这里在不同的类中使用变量
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;
不会改变任何东西。
答
您的变量是本地的,不仅不能被其他类访问,而且它们也不能被图形类中的外部方法访问。当您创建drawingComponents类时,您应该将它们作为参数传递。如果你不喜欢这样,你可以在drawingComponents中设置一个方法来稍后添加它们。您也可以为图形创建变量类变量,然后为其他类获取它们的getter方法。最后(并且不推荐这样做,因为这是不好的做法),你可以使变量公开和静态。
祝你好运。
这看起来像Java **而不是Javascript - 它们是完全不同的编程语言。 –
我的坏@ greg-449 – antonio