我正在制作一个添加和格式化文件的程序。我实际上有很多课程,但为了这个问题的目的,让我说我有两个,guidialog和guimain。
在guidialog中,我有一个JTextField和一个actionlistener。这是actionlistner:
public void actionPerformed(ActionEvent event) {
blockName=textFieldBlockName.getText();
System.out.println("Made new block: "+blockName);
canClose=true;
guimain blockAddWrite = new guimain();
blockAddWrite.addNewBlockFile();
}
});
public String blockName;
现在在guimain我有一个格式化程序,它根据文本字段中给出的名称写入文件:
public void addNewBlockFile() {
blockdialog blockName = new blockdialog();
try {
newBlock = new Formatter("Block" + blockName.blockName + ".java");
System.out.println("Created File: Block" + blockName.blockName);
} catch (Exception e) {
System.out.println("ERROR: Could Not Output Block File");
}
}
我编辑并关闭文件,但没有必要。但是当我尝试这个时,guimain中引用blockName的所有东西都输出为“null”。我无法弄清楚。
答案 0 :(得分:2)
那是因为在guimain中,你没有使用用户输入内容的对话框的blockName字段:你正在使用另一个新构造的对话框的blockName字段:
public void addNewBlockFile() {
blockdialog blockName = new blockdialog();
^--- the dialog is not the one where the user entered something. It's a new one.
您应该将blockName从对话框传递给guimain:
public void actionPerformed(ActionEvent event) {
blockName=textFieldBlockName.getText();
System.out.println("Made new block: "+blockName);
canClose=true;
guimain blockAddWrite = new guimain(blockName); // we construct a guimain instance with the entered text
blockAddWrite.addNewBlockFile();
}
});
附注: