将文本设置为textField的问题

时间:2016-03-02 14:57:03

标签: java client-server jtextfield configuration-files

我正在创建一个客户端 - 服务器聊天应用程序,我打算存储用户名以获得更好的用户体验。一旦我触发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();
            }
        }
    }
}

2 个答案:

答案 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();

在构造函数内部。我删除了构造函数中的一个,它解决了问题。

再次感谢大家的帮助。