嘿,我刚刚开始使用Java,RMI和JFrame大约两周前。 我正在做一个游戏,它作为一个控制台工作正常,但现在我添加了一个GUI,我对如何将远程客户端消息发送到我的文本区感到困惑
远程客户端界面
public interface IRemoteClientObject extends Remote {
public void notifyLogin(String player) throws RemoteException;
public void notifyLogout(String player) throws RemoteException;
public void notifyStatus(String player, PlayerStatus status) throws RemoteException;
public boolean challenge(String player) throws RemoteException;
}
远程客户端
public class RemoteClientObject extends UnicastRemoteObject implements
IRemoteClientObject {
/**
*
*/
private static final long serialVersionUID = -7209335248515276286L;
/**
* @throws RemoteException
*/
public RemoteClientObject() throws RemoteException {
}
@Override
public void notifyLogin(String player) throws RemoteException {
System.out.println("\n" + player + " joined the game");
}
@Override
public void notifyLogout(String player) throws RemoteException {
System.out.println("\n" + player + " left the game");
}
@Override
public void notifyStatus(String player, PlayerStatus status) throws RemoteException {
if (status.equals(PlayerStatus.PLAYING))
{
System.out.println("\n" + player + " is now playing");
}
else if (status.equals(PlayerStatus.READY))
{
System.out.println("\n" + player + " is available to play");
}
else
{
System.out.println("\n" + player + " is unavailable to play");
}
}
}
在没有任何GUI的程序中,例如当玩家登录时(它向所有发出该通知的玩家发送消息)
for (Player player : serverObject.getPlayers())
{
player.getClient().notifyLogin(username);
}
但是现在我不想在System.out中找到该文本,我希望它在文本区域中
那么有人能让我描述如何做到这一点吗?代码不是最重要的,我只是想了解它如何从远程客户端工作到GUI(JTextArea)?
答案 0 :(得分:1)
我不确定你已经拥有了什么。如果图片中的GUI已经构建并且您已创建了JTextArea对象,那么只需将行System.out.println(...)
替换为myTextArea.setText(...)
或myTextArea.append(...)
,具体取决于您是要保留以前的内容还是替换它
答案 1 :(得分:0)
根据我的理解,你必须在一个按钮(或文本框的鼠标监听器)上添加一个按钮监听器,它会寻找某个键击(可能是输入按钮),或者你甚至可以在你的GUI中添加一个JButton用户点击“提交”#34;他们在该文本区域的文本。
在按钮监听器中,您只需编写类似JTextArea.getText();
的内容(" JTextArea"只是您所谓的文本区域变量。