Code mit Frame in Applet umwandeln?

Status
Nicht offen für weitere Antworten.

Picknicker

Mitglied
Hallo,

ich habe mich etwas mit dem JGraph beschäftigt um einen Graphen zu zeichnen.
Bisher habe ich den Code wie unten (und unter: http://www.jgraph.com/getstarted.html ) nur als Frame zum Laufen gebracht.

Was muss ich tun um den Code so umzubauen um ein Applet daraus zu machen?

Geht das einfach durch init() und paint(), aber wie und was muss ich dann zeichnen? Wie bekomm ich die zwei Vertex und die Edge auf das Applet?

Code:
import org.jgraph.JGraph;
import org.jgraph.graph.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.BorderFactory;
import java.util.Hashtable;
import java.awt.Rectangle;
import java.awt.Color;
import java.util.Map;

public class HelloWorld {

  public static void main(String[] args) {

    // Construct Model and Graph
    //
    GraphModel model = new DefaultGraphModel();
    JGraph graph = new JGraph(model);
    graph.setSelectNewCells(true);

    // Create Nested Map (from Cells to Attributes)
    //
    Map attributes = new Hashtable();

    // Create Hello Vertex
    //
    DefaultGraphCell hello = new DefaultGraphCell("Hello");
    
    // Create Hello Vertex Attributes
    //
    AttributeMap helloAttrib = model.createAttributes();
    attributes.put(hello, helloAttrib);
    // Set bounds
    Rectangle helloBounds = new Rectangle(20, 20, 40, 20);
    GraphConstants.setBounds(helloAttrib, helloBounds);
    // Set black border
    GraphConstants.setBorderColor(helloAttrib, Color.black);

    // Add a Port
    //
    DefaultPort hp = new DefaultPort();
    hello.add(hp);

    // Create World Vertex
    //
    DefaultGraphCell world = new DefaultGraphCell("World");

    // Create World Vertex Attributes
    //
    AttributeMap worldAttrib = model.createAttributes();
    attributes.put(world, worldAttrib);
    // Set bounds
    Rectangle worldBounds= new Rectangle(140, 140, 40, 20);
    GraphConstants.setBounds(worldAttrib , worldBounds);
    // Set fill color
    GraphConstants.setBackground(worldAttrib, Color.orange);
    GraphConstants.setOpaque(worldAttrib, true);
    // Set raised border
    GraphConstants.setBorder(worldAttrib, 
           BorderFactory.createRaisedBevelBorder());

    // Add a Port
    //
    DefaultPort wp = new DefaultPort();
    world.add(wp);

    // Create Edge
    //
    DefaultEdge edge = new DefaultEdge();
    
    // Create Edge Attributes
    //
    AttributeMap edgeAttrib = model.createAttributes();
    attributes.put(edge, edgeAttrib);
    // Set Arrow
    int arrow = GraphConstants.ARROW_CLASSIC;
    GraphConstants.setLineEnd(edgeAttrib , arrow);
    GraphConstants.setEndFill(edgeAttrib, true);

    // Connect Edge
    //
    ConnectionSet cs = new ConnectionSet(edge, hp, wp);
    Object[] cells = new Object[]{edge, hello, world};

    // Insert into Model
    //
    model.insert(cells, attributes, cs, null, null);

    // Show in Frame
    //
    JFrame frame = new JFrame();
    frame.getContentPane().add(new JScrollPane(graph));
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }

}

Danke und Gruß :roll:
 
Muss das Programm direkt als Applet innerhalb der Webseite ausgeführt werden, oder kann es sich auch in einem JFrame öffnen, der vom Applet aufgerufen wurde?
 
Der Code soll über den Browser aufgerufen und dargestellt werden!
Kein lästiges aufrufen über die Konsole o.ä.!! 😳

Was meintest Du mit: "oder kann es sich auch in einem JFrame öffnen, der vom Applet aufgerufen wurde?"

Danke
 
Wenn Du den JFrame nicht von der Console aus aufrufen möchtest, kannst Du auch eine ausführbare jar-Datei erzeugen, die einfach per Doppelklick geöffnet werden kann. Wobei das aber in diesem Fall vielleicht nicht funktionieren wird (java -cp jgraph.jar;. HelloWorld). Für diesen Aufruf kannst Du aber eine Batch-Datei schreiben, die auch per Doppelklick den JFrame öffnen kann.
Oder Du schreibst ein Applet, welches nur eine Aufgabe hat: Diesen JFrame zu öffnen.
Ansonsten muss das gesamte Programm umgestellt werden.
 
Läuft dann der Frame im Applet oder öffnet das Applet nur den Frame?

Was müßte ich tun um den Code auf ein Applet umzustellen?
Dann benutze ich ja die init() und evtl. auch die paint()-Methoden, oder!?
 
Picknicker hat gesagt.:
Läuft dann der Frame im Applet oder öffnet das Applet nur den Frame?
Das Applet würde nur den Frame öffnen und anzeigen. Ich weiß aber nicht, ob es das ist was Du letztendlich willst.
Picknicker hat gesagt.:
Was müßte ich tun um den Code auf ein Applet umzustellen?
Dann benutze ich ja die init() und evtl. auch die paint()-Methoden, oder!?
Genau. Es ist so wie Du sagst.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben