我正在创建一个客户端 - 服务器聊天应用程序,我打算存储用户名以获得更好的用户体验。一旦我触发main方法,就会调用load()方法。此方法自动设置用户名通过从配置文件中读取。配置文件不为空(我已存储用户名)。但textField没有更新。任何想法?这是我的加载方法:
public static void load()
{
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
prop.load(input);
textField.setText(prop.getProperty("user")); //not updating!!!!
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
答案 0 :(得分:0)
再加上Andreas Fester上面所说的话。您应该首先检查文件,如果它存在与否,这将允许您在项目根目录的情况下验证您是否指向正确的目录。还要添加一个说if(prop.getProperty("user")==null){//handle null}
之类的子句,然后尝试使用textField.append("text");
只是为了查看不同的方法,然后通过执行System.out.println("TextField: "+textField.getText())
验证是否正在设置文本
如果有什么东西看oracle给出的this demo来使用textfield。另外它是一个很好的做法,知道何时分离成员变量(属于实例)或类变量(静态),我会避免像提供的演示中的静态。
希望这会有所帮助。
答案 1 :(得分:0)
感谢您的帮助,伙计。我想出了问题。实际上,我已将textfield声明为:
static JTextField textField = new JTextField();
在main()之外,然后再次作为:
textField = new JTextField();
在构造函数内部。我删除了构造函数中的一个,它解决了问题。
再次感谢大家的帮助。