JTree über RMI anfordern (help needed)

kengeln

Grünschnabel
Hallo Leute,

ich muss ein Dateimanager schreiben der Dateien löschen, umbenennen, up/downloaden (auf ein entferntes verzeichnis) und entfernt ausführen kann.
Ich hab schon ne Menge geschafft, brauch aber an einer Stelle hilfe. :(

Ich brauche zwei JTrees (einen auf der linken Seite, der die lokalen Daten enthält und einen auf der rechten Seite der die entfernten Daten enthält).

Der linke JTree zeigt mir an was sich auf meiner Festplatte c:\ befindet, das funktioniert auch wunderbar.

Der rechte JTree zeigt mir leider gar nix an. Da ich meine Client/Server Architektur mit RMI implementiert habe, hab ich mir gedacht es wäre doch einfach über einen Remotemethodenaufruf sich das JTree objekt vom Server zurückgeben zu lassen und das dann in der GUI darzustellen.
Das klappt aber nicht, es wird kein Tree dargestellt.
Wie gesagt lokal funktioniert es mit der Klasse FileSystemModel, aber über Remote zeigt er mir in meiner GUI nix an.

Das hier ist mein Server (zu testzwecken lasse ich c:\ anzeigen und nicht das remotedirectory):

import java.io.*;
import java.rmi.*;
import java.rmi.server.*;
import javax.swing.JTree;


public class Server extends UnicastRemoteObject implements IServer {

static JTree rm = null;

private Server() throws RemoteException {
}

static String remoteDirectory = "c:\\rm\\remote\\";

public JTree getTree() throws IOException {
return rm;
}

/**
* bind a server object in the rmi registry
* @param args[]
*/
public static void main(String[] args) {

try {
FileSystemModel modelrm = new FileSystemModel (new File ("c:\\"));
//create a jtree with filesystem model

rm = new JTree (modelrm);
//start the registry automatically
Runtime.getRuntime().exec("rmiregistry");
System.out.println("RMI Registry is started");
Naming.rebind("rmi://localhost/MyServer", new Server());
System.out.println("Server gestartet");
} catch (Exception exc) {
exc.printStackTrace();
}
}
}


und so möchte ich das ganze aufrufen und benutzen:

Server server = (IServer)Naming.lookup("rmi://" + hostname + "/MyServer");
jPanel1.add(new JScrollPane(server.getTree()), BorderLayout.CENTER);

Woran liegt es, das mein Tree nicht dargestellt wird?

Wenn ihr mir helfen könntet wäre das echt super.

Danke im voraus. :)

Kai
 
Hiho,

ich hab das Problem gelöst:

ich habe meine klasse FileSystemModel serialiable implementieren lassen und gebe anstelle des JTrees nur das Modell zurück. Damit erzeuge ich dann auf der GUI den Tree.

Jetzt stehe ich aber vor einem neuen Problem:

In dem Tree lässt sich nix anklicken. Hat jemand eine Idee?

MfG

Kai
 
Zurück