带有JFrame的Java RMI - 从客户端获取文本到GUI

时间:2014-03-24 20:34:38

标签: java swing user-interface rmi

嘿,我刚刚开始使用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中找到该文本,我希望它在文本区域中

enter image description here

那么有人能让我描述如何做到这一点吗?代码不是最重要的,我只是想了解它如何从远程客户端工作到GUI(JTextArea)?

2 个答案:

答案 0 :(得分:1)

我不确定你已经拥有了什么。如果图片中的GUI已经构建并且您已创建了JTextArea对象,那么只需将行System.out.println(...)替换为myTextArea.setText(...)myTextArea.append(...),具体取决于您是要保留以前的内容还是替换它

答案 1 :(得分:0)

根据我的理解,你必须在一个按钮(或文本框的鼠标监听器)上添加一个按钮监听器,它会寻找某个键击(可能是输入按钮),或者你甚至可以在你的GUI中添加一个JButton用户点击“提交”#34;他们在该文本区域的文本。

在按钮监听器中,您只需编写类似JTextArea.getText();的内容(" JTextArea"只是您所谓的文本区域变量。