0

学生クライアント用のRMIサーバーを作成するプログラムがあります

名前----住所-------クラス グループ
トム-----ロー ストリート-----ウェブ 2
メアリー----ハイ ストリート----ゲーム 2
ジョン----ミドル ストリート-- ウェブ 2

そして、私は3つの見出しを使用するGUIを持っていますが、この直後に表示される上記の情報ではなく、ボタンをクリックして更新された情報を表示するのではなく、実行時にGUIを自動的に更新したいと考えています。

私が立ち往生しているGUIビットは、サーバーとクライアントが実行された直後にGUIが実行されたときに、この情報をGUIに入力する方法を見つけることができません。

これまでのところ、いくつかの異なることを試してみましたが、うまくいきませんでした。

これはGuiコードです

import java.awt.event.*;

import javax.swing.*;
import java.awt.GridLayout;

public class StudentGui extends JFrame
{
    private JTextField NameLabel= new JTextField("Name");
    private JTextField AddressLabel= new JTextField("Address");
    private JTextField GroupLabel= new JTextField("Group");
    private JTextField FirstName= new JTextField(" ");
    private JTextField SecondName= new JTextField(" ");
    private JTextField ThirdName= new JTextField(" ");
    private JTextField FirstAddress= new JTextField(" ");
    private JTextField SecondAddress= new JTextField(" ");
    private JTextField ThirdAddress= new JTextField(" ");
    private JTextField FirstGroup= new JTextField(" ");
    private JTextField SecondGroup= new JTextField(" ");
    private JTextField ThirdGroup= new JTextField(" ");

    StudentGui(String s){
        super(s);

            getContentPane().setLayout(new GridLayout(4,3));
            getContentPane().add(NameLabel);
            getContentPane().add(AddressLabel);
            getContentPane().add(GroupLabel);
            getContentPane().add(FirstName);
            getContentPane().add(FirstAddress);
            getContentPane().add(FirstGroup);
            getContentPane().add(SecondName);
            getContentPane().add(SecondAddress);
            getContentPane().add(SecondGroup);
            getContentPane().add(ThirdName);
            getContentPane().add(ThirdAddress);
            getContentPane().add(ThirdGroup);

            setSize(350,150);
            setVisible(true);

    }
      public static void main(String[] args){
         new StudentGui("RMI GUI Client");
      }
}

学生クライアントコード

import java.rmi.*;

public class StudentClient
{
    public static void main(String args[]){
        String url = "rmi:///";

        try{
            StudentInterface aTom=(StudentInterface)Naming.lookup(url+"Tom");
            StudentInterface aMary=(StudentInterface)Naming.lookup(url+"Mary");
            StudentInterface aJohn=(StudentInterface)Naming.lookup(url+"John");

            System.out.println("Name    Address     Class Group");
            System.out.println(aTom.getName()+" "+aTom.getAddress()+"   "+aTom.getGroup());
            System.out.println(aMary.getName()+"    "+aMary.getAddress()+"  "+aMary.getGroup());
            System.out.println(aJohn.getName()+"    "+aJohn.getAddress()+"  "+aJohn.getGroup());

            System.out.println("\n" + "Changed too:" + "\n" );

            aTom.setAddress("Lower Street");
            aMary.setAddress("Higher Street");
            aMary.setGroup("Game 3");
            aJohn.setGroup("Web 3");

            System.out.println("Name    Address     Class Group");
            System.out.println(aTom.getName()+" "+aTom.getAddress()+"   "+aTom.getGroup());
            System.out.println(aMary.getName()+"    "+aMary.getAddress()+"  "+aMary.getGroup());
            System.out.println(aJohn.getName()+"    "+aJohn.getAddress()+"  "+aJohn.getGroup());

        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

残りのコードが必要な場合は、提供できます。私はこれが私のために行われることを望んでいません。おそらく、この情報をGUIに入力する方法についてのポインタです。

前もって感謝します。

4

1 に答える 1

0

誰かがこのようなことをした場合に備えて、これは私が最終的にそれを理解した方法であり、非常に簡単でした:)

Java コード:

import java.awt.event.*;

import javax.swing.*;
import java.awt.GridLayout;
import java.rmi.Naming;

public class StudentGui extends JFrame
{
    private JTextField NameLabel= new JTextField("Name");
    private JTextField AddressLabel= new JTextField("Address");
    private JTextField GroupLabel= new JTextField("Group");
    private JTextField FirstName= new JTextField("");
    private JTextField SecondName= new JTextField("");
    private JTextField ThirdName= new JTextField("");
    private JTextField FirstAddress= new JTextField("");
    private JTextField SecondAddress= new JTextField("");
    private JTextField ThirdAddress= new JTextField("");
    private JTextField FirstGroup= new JTextField("");
    private JTextField SecondGroup= new JTextField("");
    private JTextField ThirdGroup= new JTextField("");

    String url = "rmi:///";

    StudentGui(String s){
        super(s);

            getContentPane().setLayout(new GridLayout(4,3));
            getContentPane().add(NameLabel);
            getContentPane().add(AddressLabel);
            getContentPane().add(GroupLabel);
            getContentPane().add(FirstName);
            getContentPane().add(FirstAddress);
            getContentPane().add(FirstGroup);
            getContentPane().add(SecondName);
            getContentPane().add(SecondAddress);
            getContentPane().add(SecondGroup);
            getContentPane().add(ThirdName);
            getContentPane().add(ThirdAddress);
            getContentPane().add(ThirdGroup);

            setSize(350,150);
            setVisible(true);    

            try{
                StudentInterface aTom=(StudentInterface)Naming.lookup(url+"Tom");
                FirstName.setText(aTom.getName());
                FirstAddress.setText(aTom.getAddress());
                FirstGroup.setText(aTom.getGroup());
                StudentInterface aMary=(StudentInterface)Naming.lookup(url+"Mary");
                SecondName.setText(aMary.getName());
                SecondAddress.setText(aMary.getAddress());
                SecondGroup.setText(aMary.getGroup());
                StudentInterface aJohn=(StudentInterface)Naming.lookup(url+"John");
                ThirdName.setText(aJohn.getName());
                ThirdAddress.setText(aJohn.getAddress());
                ThirdGroup.setText(aJohn.getGroup());
            }catch(Exception a){
                a.printStackTrace();
            }
    }
      public static void main(String[] args){
         new StudentGui("RMI GUI Client");
      }
}
于 2013-03-05T13:13:36.030 に答える