我的程序有点问题,包括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());
}
}
}
我希望这已经足够了;)感谢您的帮助
答案 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声明为静态,要么将你的方法改为非静态并使用对象调用,即网络