gpt4 book ai didi

java - 循环未从 java 中的 actionPerformed 获取更新的 boolean 值

转载 作者:行者123 更新时间:2023-12-02 00:06:50 24 4
gpt4 key购买 nike

我正在尝试使用框架在java中创建一个简单的聊天程序。用户可以托管服务器(通过单击服务器按钮)或作为客户端连接(使用连接按钮)。我遇到的问题是服务器按钮。我的目标是,当单击“启动服务器”按钮时,所有其他按钮和字段都被禁用,并且应该运行 startServer 方法。

整个程序位于 while (!kill) 循环内,现在,它只是检查 isServer boolean 值。

    while (!kill)
{
if (isServer)
{
startServer();
}
}

按下 startServerButton 时,isServer 在 actionPerformed 内部设置为 true。

我的问题是 startServer() 永远不会运行,因为单击 startServerButton 时 while (!kill) 循环没有获取更新的 isServer 值。

这是我的运行方法:

public void run()
{
conversationBox.appendText("Session Start.\n");
inputBox.requestFocus();

while (!kill)
{
if (isServer)
{
startServer();
}
}

}

这是我执行的操作:

public void actionPerformed(ActionEvent e) throws NumberFormatException
{
Object o = e.getSource();

if (o == sendButton || o == inputBox)
{
if(inputBox.getText() != "")
{
clientSendMsg = inputBox.getText();
inputBox.setText("");
}
}
if (o == changeHost || o == hostField)
{
if (hostField.getText() != "" && hostField.getText() != host)
{
host = hostField.getText();
conversationBox.appendText("Host changed to " + host + "\n");
}
}
if (o == changePort || o == portField)
{
if (portField.getText() != "" && Integer.valueOf(portField.getText()) != port)
{
try
{
port = Integer.valueOf(portField.getText());
conversationBox.appendText("Port changed to " + port + "\n");
}
catch(NumberFormatException up)
{
throw up; //blargh enter a real value
}
}
}
if (o == startServerButton)
{
isServer = true;
startServerButton.enable(false);
connectButton.enable(false);
changeHost.enable(false);
changePort.enable(false);
sendButton.enable(false);
hostField.enable(false);
portField.enable(false);
inputBox.enable(false);
}
inputBox.requestFocus();
}

显然,该程序还远未完成,但这是一个需要忽略的相当大的障碍,因此我认为最好在继续前进之前将其修复。另外,应该注意的是,我在创建框架布局的 Chat() 对象内有一个 new Thread(this).start(); 。我不能 100% 确定这有多有效。

最佳答案

在这一行中:if (isServer)

您的意思是说 if (isServer == true) 如果单击按钮时 isServer 设置为 true?

根据我的经验,“if”语句应该始终有一个条件,例如if (variable1.equals(variable2))if (boolean == true ) 例如。

或者问题可能出在您的 while (!kill) 循环中。在这种情况下,只需取出 if 语句并查看该方法是否运行。

关于java - 循环未从 java 中的 actionPerformed 获取更新的 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com