我想做以下事情:只要一个特定的变量( 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应该执行上面描述的操作。我需要一个监听器还是一个线程?做这件事最好的方法是什么?
发布于 2013-05-10 17:00:56
脑海中浮现的一个简单解决方案是将变量包装到一个对象中,然后setter方法可以如下所示:
public void setNewValue(String newVal)
{
if(!newVal.equals(currentVal)) {
currentVal = newVal;
// Value has changed. Call the relevant code.
}
}发布于 2013-05-10 17:00:14
首先,您应该让ChatFrame变量成为私有变量,公开一个方法来更改它:
public void setRoomName(String newName) {
...
}然后,您可以为它添加一个侦听器,并在该方法中触发它。
请注意,这在逻辑上应该是一个实例变量,而不是目前看起来的静态变量。
(如果这不是您想要的,请编辑您的问题。目前还不清楚,部分原因是我们不确定setName方法在哪里,或者您是否真的有roomName和frame的静态变量。)
https://stackoverflow.com/questions/16478526
复制相似问题