3

我想做以下事情:一旦特定变量(roomName)更改其值,JFrame 的标题应更改为 roomName 的新值。我唯一的问题是,JFrame 在 roomName 更改之前已经构建。

这是我的 Connection.java 类的一个小片段:

public Connection() {
    ...
    fieldName.addKeyListener(new KeyListener() {
        public void keyPressed(KeyEvent e) {
            if(e.getKeyChar() == KeyEvent.VK_ENTER) {
                setName();
            }
        }
    });
}

public void setName(){
    ChatFrame.frame.setVisible(true);
    ChatFrame.roomName = fieldName.getText();
    this.dispose();
}

另一个类 ChatFrame.java 应该执行上述操作。我需要一个监听器或一个线程吗?最好的方法是什么?

4

2 回答 2

3

想到的一个简单的解决方案是将变量包装到一个对象中,然后 setter 方法可以如下所示:

public void setNewValue(String newVal)
{
    if(!newVal.equals(currentVal)) {
        currentVal = newVal;
        // Value has changed. Call the relevant code.
    }
}
于 2013-05-10T09:00:55.777 回答
2

您应该ChatFrame首先将变量设为私有,并公开一个更改它的方法:

public void setRoomName(String newName) {
    ...
}

然后您可以为此添加一个侦听器,并在方法中触发它。

请注意,这在逻辑上应该是一个实例变量,而不是目前看起来的静态变量。

(如果这不是您想要的,请编辑您的问题。目前还不清楚,部分原因是我们不确定setName方法在哪里,或者您是否真的roomName有and的静态变量frame。)

于 2013-05-10T09:00:13.973 回答