我正在制作一个添加和格式化文件的程序。我实际上有很多类,但是出于这个问题的目的,让我们说我有两个,guidialog和guimain。
在guidialog中,我有一个JTextField和一个动作侦听器。这是动作列表:
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”的东西。我不知道。
最佳答案
这是因为在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();
}
});
旁注:
您不应使用公共字段。使用吸气剂方法。
类应以大写字母开头,并在CamelCase:GuiMain中进行拼写。