获取我之前设置的值

时间:2013-12-18 13:39:10

标签: java class setter getter

我的程序有点问题,包括2个班级。 我想在用户点击我的程序的New-button时使用我的jTextField1文本。比我想在第二个类中使用这个值来编写一个简单的文件。

这是Class1的代码:

public class Class1 extends javax.swing.JFrame {     
    Class2 network = new Class2(); 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        network.setID(jTextField1.getText());
        Class2.New();
    }
}

第2课:

public class Class2 {    
    String tempID = "";
    public void setID(String ID){
        ID = tempID;
    }
    public static void New(){
        Class1 ID = new Class1();
        /* Here i want to save the value in a string */
        String f = string + ".dat";
        try{        
            FileOutputStream outx = new FileOutputStream("C:\\temp\\NetworkAdmin\\data\\" + f);
            PrintStream out = new PrintStream(outx);
            out.println("test");
            out.close();
        }catch(Exception e){
            System.err.println(e.toString());
        }
    }
}

我希望这已经足够了;)感谢您的帮助

3 个答案:

答案 0 :(得分:0)

Neu的每次通话设置一个新值。这样的东西是为什么你使用类。

Neu item = new Neu();
String item = item.getValue();

除非有一些非常令人信服的理由使用static,否则请避免使用{{1}}。它只允许糟糕的编码实践进入面向对象的代码。

答案 1 :(得分:0)

您无法访问静态方法中的非静态字段。因此,要么使方法和字段都是静态的,要么是非静态的。同样在class2的setID中,您设置ID = tempID,它应该是tempID = ID。

这是Class1的代码:

public class Class1 extends javax.swing.JFrame {     
    Class2 network = new Class2(); 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        network.setID(jTextField1.getText());
        network.New();
    }
}

第2课:

public class Class2 {    
    String tempID = "";
    public void setID(String ID){
        tempID = ID;
    }
    public void New(){
        Class1 ID = new Class1();
        /* Here i want to save the value in a string */
        //String f = string + ".dat";
        String f = tempID + ".dat"; // this should work - use tempID which you set before
        try{        
            FileOutputStream outx = new FileOutputStream("C:\\temp\\NetworkAdmin\\data\\" + f);
            PrintStream out = new PrintStream(outx);
            out.println("test");
            out.close();
        }catch(Exception e){
            System.err.println(e.toString());
        }
    }
}

答案 2 :(得分:-1)

你在Class2中有一个实例变量,但你没有设置它。我猜你的意思是做什么而不是

public void setID(String ID){
    ID = tempID;
}

更改为

public void setID(String ID){
    tempID = ID;
}

然后使用

String f = tempID + ".dat";

注意:那么你要么必须将tempID声明为静态,要么将你的方法改为非静态并使用对象调用,即网络