-2

我试图将值 t 从一个类传递给另一个类,但在我运行程序之前,我non static method cannot be referenced from static context从这行代码中得到:

t = (PrinterSettings.getT() * 60);

我正在尝试从此代码中获取值 t :

public int t = 1; //defualt value for amount of mintues in the future the job should wait untill sent

public int getT() {
            return (t);
        }

 public void setT(int t) {
            this.t = t;
         } 

我做错了什么?我怎样才能得到t

编辑 :

我从中得到的整个代码

         public int t = 1; //defualt value for amount of seconds in the future the job should wait untill sent

    public int getT() {
        return (t);
    }

    public void setT(int t) {
        this.t = t;
    }

这是我正在使用的类,它从上述类中调用 t 来使用:

public class DealyTillPrint {

    public int t;

    public String CompletefileName;
    private String printerindx;
    private static int s;
    private static int x;
    public static int SecondsTillRelase;

    public void countDown() {
        System.out.println("Countdown called");
        s = 1; // interval 
    t = ((new PrinterSettings().getT()) * 60); //(PrinterSettings.SecondsTillRelase); // number of seconds
        System.out.println("t is : " + t);
        while (t > 0) {
            System.out.println("Printing in : " + t);
            try {
                Thread.sleep(s * 1000);
            } catch (Exception e) {
            }
            t--;
        }

这是我t使用微调器设置的地方

<p:spinner min="1" max="1000" value="#{printerSettings.t}"  size ="1">
                    <p:ajax update="NewTime"/>
                </p:spinner>
4

3 回答 3

2

您正在使用PrinterSettings.getT()但不能这样做,因为PrinterSettings它是一个类,而getT()方法是针对对象的。您需要先创建一个 PrinterSettings 对象,然后才能调用getT().

PrinterSettings myObjectOfPrinterSettings = new PrinterSettings();
myObjectOfPrinterSettings.getT();  //this should work without the error
于 2013-02-11T18:59:33.517 回答
1

您可以选择做 2 件事中的 1 件事:

1) 将 PrinterSettings 文件中的所有内容设为静态(并使 PrinterSettings 也设为静态):

public static int t = 1; 

public static int getT() {
            return (t);
        }

 public static void setT(int t) {
            this.t = t;
         } 

2)不要更改打印机设置,只需为您的代码执行此操作:

//Put this somewhere at the beginning of your code:
PrinterSettings printerSettings = new PrinterSettings();

//Now have some code, which will include setT() at some point

//Then do this:
t = (printerSettings.getT() * 60);

在我看来,后者会更可取。

编辑:我刚刚进行的编辑是因为如果您不保留您正在使用的 PrinterSettings 变量,那么t在新的 PrinterSettings 对象中新建一个将为 1。相反,请确保您在程序开始时实例化了一个 PrinterSettings 对象,并在整个过程中使用该对象。

于 2013-02-11T18:59:43.357 回答
0

代替:

public int getT() {
            return (t);
        }
Write:

public static int getT() {
            return (t);
        }

这将解决您的问题。通过此更改,您可以使用其类名访问此方法。作为类方法。

于 2013-02-11T19:00:47.250 回答