在Java中的类之间传递变量

时间:2016-11-29 04:27:05

标签: java class variables paintcomponent

我有两个单独的类:GameOfLife.javaGrid.java,后者有paintComponent方法。在GameOfLife.java,我有一个不断变化的变量toRepaint,我需要在Grid.java中访问。

以下是我设置GameOfLife.java的{​​{1}}部分:

toRepaint

以下是我需要在if (an==0) { toRepaint = (String)c.getSelectedItem(); System.out.println(toRepaint); } main.repaint(); 中访问该变量的地方:

Grid.java

如何访问此变量?

2 个答案:

答案 0 :(得分:3)

我的建议是:

  1. 定义界面:
  2. @Override
    public String getName(){
           return rep;
        }
    
    1. 使GameOfLife类实现该接口
    2. 并覆盖类似

      的方法
      public void paintComponent(Graphics ob) {
          super.paintComponent(ob);
          Graphics2D g1 = (Graphics2D) ob;
          String rep = myInterface.getName();
      }
      
      1. Grid.java需要引用,要么在构造函数中传递,要么使用setter getters ......
      2. Regex.Replace(stringValue, @"\t|\n|\r", "");
        

答案 1 :(得分:-3)

为此,您必须使您想要在另一个类中访问的变量成为公共类变量(也称为字段):

public class GameOfLife{
    public static String toRepaint;

    public void yourMethod() {
        //set value, do stuff here
    }
}

然后在Grid.java中,使用点语法访问类变量:

public void paintComponent(Graphics ob) {
    super.paintComponent(ob);
    Graphics2D g1 = (Graphics2D) ob;
    String rep = GameOfLife.toRepaint;
}

<强>无论其

这不是最好的方法,但到目前为止最简单。为了遵循面向对象的编程,我们将向GameOfLife类添加以下访问器方法:

public static String getToRepaint(){
    return toRepaint;
}

并将我们的变量声明更改为:

private static String toRepaint;

在Grid类中,我们改为调用访问toRepaint变量的方法:

    String rep = GameOfLife.getToRepaint();

这是面向对象编程的核心,虽然看起来多余,但以后会非常有用,并且有助于使代码更加整洁。