Java JTextField变量在actionlistener之外返回null?
我正在制作一个添加和格式化文件的程序。实际上我有很多类,但是为了这个问题,让我们假设我有两个类,guidialog和guimain 在guidialog中,我有一个JTextField和一个actionlistener。以下是actionlistner:Java JTextField变量在actionlistener之外返回null?,java,class,variables,jtextfield,Java,Class,Variables,Jtextfield,我正在制作一个添加和格式化文件的程序。实际上我有很多类,但是为了这个问题,让我们假设我有两个类,guidialog和guimain 在guidialog中,我有一个JTextField和一个actionlistener。以下是actionlistner: public void actionPerformed(ActionEvent event) { blockName=textFieldBlockName.getText(); System.ou
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.
您应该将块名从对话框传递到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();
}
});
旁注:
- 您不应该使用公共字段。使用getter方法
- 类应该以大写字母开头,并用CamelCase:GuiMain拼写
actionPerformed(ActionEvent)
方法?此行是否显示对话框并等待其关闭<代码>blockdialog blockName=新建blockdialog()代码>请编辑问题,解释按顺序发生的事情以及您希望发生的事情。