Von Java-Application zum Java-Applet

Status
Nicht offen für weitere Antworten.

MSJones

Mitglied
Ich hab hier ne eine Classe, die mit aus einer Gleichung einen polnische Notation macht und diese dann in einen Baum schreibt.

Jetzt möchte ich den Baum in einem Applet ausgeben.

Das Problem dabei:
Ich hab mir ein Testapplet geschrieben, ohne übergabewerte, einfach ein Applet, daß mir einen voll gefüllten Baum zeichnet.
Dazu hab ich folgende Methode zum zeichnen der Elemente benutzt:
Code:
public void elementMalen(Graphics g, int ebene, int number, Color kColor, String str)
(x wird aus number berechnet und y aus ebene)

Das Testapplet läuft einwandfrei, nur ich hab das Problem, wich ich dann die Baumelemente zeichnen kann!
Das Problem liegt entweder darin, daß ich gesagt bekomme, daß Elementzeichnen keine statische Mehthode ist (iss klar) oder wenn ich ein Attribut anlege, dann liegt das Problem darin, woher ich dieses "Graphics g" herbekomme. Das wird nirgends initiert oder so, also kann ich das auch net übergeben!

Im prinzip ist meine Frage ganz einfach:
Wie schrieb ich diesen Baum mit der oben genannten Methode in ein Applet?
 

L-ectron-X

Gesperrter Benutzer
Ein Graphics-Objekt kann mit...
Code:
Graphics g = getGraphics();
...beschafft werden.
Um auf ein Applet (Panel) zu zeichnen muss in das Applet die Methode
Code:
public void paint(Graphics g)
eingefügt werden.
Ein wenig mehr Code von Deinem Applet wäre schön gewesen.
 

MSJones

Mitglied
OK, also Baum erstellen iss kein Problem.
Hier meine Applet-Klasse:
Code:
//Imports für Applets:
import java.applet.*;
import java.awt.*;

/**
 * Mein kleines Test-Applet
 * 
 * @author Marko "Kiroken" Rosar
 * @version 14.07.2004
 */
public class TestApplet extends Applet {

    // Konstanten:
    private static String STATUS_GESTARTET = "Applet gestartet";
    private static String STATUS_GESTOPT = "Applet gestopt";
     
    // Attribute:
    private Color bgColor = Color.LIGHT_GRAY; //Hintergrundfarbe
    private Color raColor = Color.DARK_GRAY; //Randfarbe
    int raBreite = 2; //Randbreite
    private String programmStatus = "";  
    
    
    /**
     * Diese Methode wird beim Ausführen des Applets aufgerufen.
     * Sie initialisiert das Applet.
     */
    public void init() {
    }
    
    
    /**
     * Diese Methode wird immer dann aufgerufen, wenn das Applet
     * teilweise oder gänzlich neu gezeichnet werden muss.
     * 
     * param g Eine Abstrakte Klasse mit jeder menge statischer Methoden zum Zeichnen
     */
    public void paint(Graphics g) {
        // Statuszeile schreiben:
        showStatus(programmStatus);
        //Rand Malen:
        g.setColor(raColor);
        g.fillRect(0,0,getWidth(),getHeight());
        // Innenbereich Malen:
        g.setColor(bgColor);
        g.fillRect(raBreite,raBreite,getWidth()-(2*raBreite),getHeight()-(2*raBreite));
        // Überschrift:
        Font f = new Font("SansSerif",Font.BOLD,16);
        g.setFont(f);
        g.drawString("Kirokens Applet",50,40);
        // Kreis malen BSP:
        Color c = Color.BLUE;
        int maxAnz = 1;
        int kante = 20;
        String str = "-";
        for (int testE = 1; testE <= 6; testE++) {
            if (testE == 1) str = "-";
            if (testE == 2) str = "+";
            if (testE == 3) str = "*";
            if (testE == 4) str = "/";
            if (testE == 5) str = "^";
            // Maximale Anzahl der Elemente auf dieser Ebene:
            maxAnz = 1;
            for (int i=2; i<= testE; i++) maxAnz *= 2;  
            for (int testA = 1; testA <= maxAnz; testA++) 
                elementMalen(g, testE, testA, kante, testE*50, c, str);
        }

    }
    
    
    /**
     * Diese Methode wird aufgerufen, wenn das Applet zerstört wird.
     * Hier können Aufräumarbeiten geschehen.
     */
    public void destroy() {
        
    }
    
    
    /**
     * Mit dieser Methode können Baum-Elemente auf dem Applet gezeichnet werden.
     * 
     * @param g Grafik, auf der das Element gezeichnet wird
     * @param ebene Die Ebene eines Baumes, auf der sich das Element befinden soll
     * @param number Die Nummer des zu zeichnenden Elementes
     * @param k Die Kantenlänge des Elementes
     * @param y Die y-Achse auf der das Element gezeichnet werden soll
     * @param kColor Die Farbe des zu zeichnenden Elementes
     * @param str Beschriftung des Elementes
     */
    public void elementMalen(Graphics g, int ebene, int number, int kante, int y, Color kColor, String str) {
        // Maximale Anzahl der Elemente auf dieser Ebene:
        int maxAnz = 1;
        for (int i=2; i<= ebene; i++) maxAnz *= 2;      
        // Abbrechen ohne zu Zeichnen, wenn Elementnummer > maximale Anzahl
        if (number > maxAnz) return;
        // Abbrechen wenn das Element nicht gezeichnet werden kann:
        if (y < 0) return;
        // Abstand der Kreise von einander:
//      int elementabstand = getWidth() / (maxAnz+1);
        int temp = 1;
        for (int i=1; i<= ebene; i++) temp *= 2;
        int elementabstand = getWidth() / temp;
        // Element zeichnen:
        int x = elementabstand * (number-1) * 2 + elementabstand - k/2;
        g.setColor(kColor);
        g.drawRoundRect(x,y,k,k,5,5);
        Font f = new Font("SansSerif",Font.TRUETYPE_FONT,14);
        g.setFont(f);
        g.drawString(str,x+6,y+15);
    }
    
    
    /**
     * Diese Methode wird aufgerufen, wenn der Browser das Applet
     * stopt, aber nicht zerstört. 
     */
    public void stop() {
        // Status aktuallisieren: 
        programmStatus = STATUS_GESTOPT;
        
    }
    
    
    /**
     * Diese Methode wird aufgerufen, wenn der Browser das Applet
     * wieder aktiviert. 
     */
    public void start() {
        // Status aktuallisieren:
        programmStatus = STATUS_GESTARTET;
    }
}

und jetzt soll da noch irgendwo eine Methode rein, der ich einen Baum übergebe und der mir den Baum dann ins Applet zeichnet!
 

L-ectron-X

Gesperrter Benutzer
Ich habe zwei oder drei kleinere Fehler beseitigt.
Aus so richtig "schönem" Code besteht Deine Applet-Klasse aber nicht. Daran kannst Du ja noch feilen. Auf jeden Fall funktioniert sie jetzt.
Code:
//Imports für Applets:
import java.applet.*;
import java.awt.*;

/**
* Mein kleines Test-Applet
*
* @author Marko "Kiroken" Rosar
* @version 14.07.2004
*/
public class TestApplet extends Applet {

    // Konstanten:
    private static String STATUS_GESTARTET = "Applet gestartet";
    private static String STATUS_GESTOPT = "Applet gestopt";

    // Attribute:
    private Color bgColor = Color.LIGHT_GRAY; //Hintergrundfarbe
    private Color raColor = Color.DARK_GRAY; //Randfarbe
    int raBreite = 2; //Randbreite
    private String programmStatus = "";

    private Font f;


    /**
     * Diese Methode wird beim Ausführen des Applets aufgerufen.
     * Sie initialisiert das Applet.
     */
    public void init() {
       f = new Font("SansSerif",Font.BOLD,16);
    }


    /**
     * Diese Methode wird immer dann aufgerufen, wenn das Applet
     * teilweise oder gänzlich neu gezeichnet werden muss.
     *
     * param g Eine Abstrakte Klasse mit jeder menge statischer Methoden zum Zeichnen
     */
    public void paint(Graphics g) {
        // Statuszeile schreiben:
        showStatus(programmStatus);
        //Rand Malen:
        g.setColor(raColor);
        g.fillRect(0,0,getWidth(),getHeight());
        // Innenbereich Malen:
        g.setColor(bgColor);
        g.fillRect(raBreite,raBreite,getWidth()-(2*raBreite),getHeight()-(2*raBreite));
        // Überschrift:

        g.setFont(f);
        g.setColor(Color.black);
        g.drawString("Kirokens Applet",50,40);
        // Kreis malen BSP:
        Color c = Color.BLUE;
        int maxAnz = 1;
        int kante = 20;
        String str = "-";
        for (int testE = 1; testE <= 6; testE++) {
            if (testE == 1) str = "-";
            if (testE == 2) str = "+";
            if (testE == 3) str = "*";
            if (testE == 4) str = "/";
            if (testE == 5) str = "^";
            // Maximale Anzahl der Elemente auf dieser Ebene:
            maxAnz = 1;
            for (int i=2; i<= testE; i++) maxAnz *= 2;
            for (int testA = 1; testA <= maxAnz; testA++)
                elementMalen(g, testE, testA, kante, testE*50, c, str);
        }

    }


    /**
     * Diese Methode wird aufgerufen, wenn das Applet zerstört wird.
     * Hier können Aufräumarbeiten geschehen.
     */
    public void destroy() {

    }


    /**
     * Mit dieser Methode können Baum-Elemente auf dem Applet gezeichnet werden.
     *
     * @param g Grafik, auf der das Element gezeichnet wird
     * @param ebene Die Ebene eines Baumes, auf der sich das Element befinden soll
     * @param number Die Nummer des zu zeichnenden Elementes
     * @param k Die Kantenlänge des Elementes
     * @param y Die y-Achse auf der das Element gezeichnet werden soll
     * @param kColor Die Farbe des zu zeichnenden Elementes
     * @param str Beschriftung des Elementes
     */
    public void elementMalen(Graphics g, int ebene, int number, int kante, int y, Color kColor, String str) {
        // Maximale Anzahl der Elemente auf dieser Ebene:
        int maxAnz = 1;
        for (int i=2; i<= ebene; i++) maxAnz *= 2;
        // Abbrechen ohne zu Zeichnen, wenn Elementnummer > maximale Anzahl
        if (number > maxAnz) return;
        // Abbrechen wenn das Element nicht gezeichnet werden kann:
        if (y < 0) return;
        // Abstand der Kreise von einander:
//      int elementabstand = getWidth() / (maxAnz+1);
        int temp = 1;
        for (int i=1; i<= ebene; i++) temp *= 2;
        int elementabstand = getWidth() / temp;
        // Element zeichnen:
        int x = elementabstand * (number-1) * 2 + elementabstand - kante/2;
        g.setColor(kColor);
        g.drawRoundRect(x,y,kante,kante,5,5);
        f = new Font("SansSerif",Font.TRUETYPE_FONT,14);
        g.setFont(f);
        g.drawString(str,x+6,y+15);
    }


    /**
     * Diese Methode wird aufgerufen, wenn der Browser das Applet
     * stopt, aber nicht zerstört.
     */
    public void stop() {
        // Status aktuallisieren:
        programmStatus = STATUS_GESTOPT;

    }


    /**
     * Diese Methode wird aufgerufen, wenn der Browser das Applet
     * wieder aktiviert.
     */
    public void start() {
        // Status aktuallisieren:
        programmStatus = STATUS_GESTARTET;
    }
}
 

MSJones

Mitglied
Bei mir hat das Applet vorher auch schon funktioniert!

Aber ich kann das Applet immer noch nicht aus einer Java-Application aus aufrufen!
 

L-ectron-X

Gesperrter Benutzer
Zunächst mal kann ich gar nicht glauben, dass das Applet bei Dir lief (zumindest nicht in der von Dir geposteten Version), denn ich bekam beim Kompilieren vom Compiler erst mal einige Fehler präsentiert.
Und zweitens war davon, dass Du das Applet von einer Applikation aus aufrufen möchtest, nie die Rede.

Applets "leben" normaler Weise in Browsern. Es gibt jedoch auch die Möglichkeit sie als Panel einem Frame hinzuzufügen. Das geht in den meisten Fällen, in dem man vom Applet eine Instanz erzeugt, die init()-Methode des Applets aufruft und es dem Frame hinzufügt add(appletInstanz);.
Falls das nicht die Antwort auf Deine Frage war, solltest Du Dein Vorhaben bitte etwas genauer schildern.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Maven NetBeans Java Application ohne Manifest-Datei Tools - Maven, Gradle, Ant & mehr 7
HaukeG Maven Java Web-Application in Eclipse - Abhängigkeiten zwischen den Projekten Tools - Maven, Gradle, Ant & mehr 10
M Java Application startet bei verschiedenen JRE's nicht Tools - Maven, Gradle, Ant & mehr 7
U was braucht man um fuer eine Java-Server-Application? Tools - Maven, Gradle, Ant & mehr 6
Oneixee5 Java Images Tools - Maven, Gradle, Ant & mehr 5
B Kleines Werkzeug zum Anzeigen von Mehrfachvererbung mit Interfaces in Java Tools - Maven, Gradle, Ant & mehr 5
D Java Programm veröffentlichen am Besten modular Tools - Maven, Gradle, Ant & mehr 28
H Maven Verbindung Java Projekt und Jenkins Build job Tools - Maven, Gradle, Ant & mehr 21
Q Java Eclipse Fehlermeldung bei Installation Tools - Maven, Gradle, Ant & mehr 3
D Maven Abhängigkeiten überprüfen auf Kompatibilität mit einer anderen Java-Version Tools - Maven, Gradle, Ant & mehr 11
R Webstart Java 11 ohne Web Start Tools - Maven, Gradle, Ant & mehr 5
M Java mit Modulen kompilieren klappt nicht Tools - Maven, Gradle, Ant & mehr 9
R Java mitnehmen Tools - Maven, Gradle, Ant & mehr 14
W Java on Cloud - which Provider Tools - Maven, Gradle, Ant & mehr 0
S Python-Code mit Java ausführen Tools - Maven, Gradle, Ant & mehr 13
B Java auf Smartcards?! Tools - Maven, Gradle, Ant & mehr 9
J Java App im Mac Store veröffentlichen Tools - Maven, Gradle, Ant & mehr 0
M Maven (Java EE, WAR) Eigener Buildschritt - Manipulation von Dateien Tools - Maven, Gradle, Ant & mehr 4
VfL_Freak Desktopverknüpfung über den Java-Cache erstellen Tools - Maven, Gradle, Ant & mehr 0
S New version released: Java Switcher for 1.8.0_112 and Windows x64 only Tools - Maven, Gradle, Ant & mehr 4
S Java 32 Bit and 64 Bit Switcher for Windows XX [64 Bit only] Tools - Maven, Gradle, Ant & mehr 0
F java.lang.ClassNotFoundException auf anderem Rechner Tools - Maven, Gradle, Ant & mehr 0
S Applet Java Testen - Ergebnis wird nicht angezeigt, nur leeres Feld Tools - Maven, Gradle, Ant & mehr 15
T Java Applikation an Clients verteilen Tools - Maven, Gradle, Ant & mehr 5
S Java Web Start wird nicht ausgeführt Tools - Maven, Gradle, Ant & mehr 1
J Applet Java fragt Verzeichnis ab Tools - Maven, Gradle, Ant & mehr 0
J Applet .java.policy und neue Javaversion Tools - Maven, Gradle, Ant & mehr 4
R Maven woher gewusst, dass mein Java-Code commons-lang braucht? Tools - Maven, Gradle, Ant & mehr 0
O Applet Selbstsignierte Applets in Java 7 Update 51 Tools - Maven, Gradle, Ant & mehr 19
M Was muss man installiert haben damit Java Applets im Browser gehen Tools - Maven, Gradle, Ant & mehr 2
T ClassNotFound erfordert ständiges Löschen des Java-Cache. Tools - Maven, Gradle, Ant & mehr 2
P Applet Java Applet läuft im Browser nicht mehr (HTTPClient - NoClassDefFoundError) Tools - Maven, Gradle, Ant & mehr 3
B Webstart Java Webstart hängt sich beim Laden auf! Tools - Maven, Gradle, Ant & mehr 8
T Daten per POST-Methode aus Java-Applet nach php-Script senden Tools - Maven, Gradle, Ant & mehr 3
ChrisX Java im Autostart sinnvoll? Tools - Maven, Gradle, Ant & mehr 4
F [Java Webstart] Webspace gesucht... Tools - Maven, Gradle, Ant & mehr 6
B Wie kann man unter Windows 7 file types mit Java Applikationen verknüpfen? Tools - Maven, Gradle, Ant & mehr 5
D Java mit .bat starten Tools - Maven, Gradle, Ant & mehr 1
S Java Applikation als Windows Service einrichten Tools - Maven, Gradle, Ant & mehr 23
C Aufruf eines Java Programms mittels ant MIT Parametern Tools - Maven, Gradle, Ant & mehr 2
P Java Applikation auf Server Tools - Maven, Gradle, Ant & mehr 7
schlingel Applet Java-Sicherheitswarnung wegen alter JRE-Version Tools - Maven, Gradle, Ant & mehr 13
S Applet Applet mit C# öffnen: java.lang.SecurityException: Permission denied (WinXP) Tools - Maven, Gradle, Ant & mehr 8
W CVS Keine Verbindung zu cvs.dev.java.net möglich Tools - Maven, Gradle, Ant & mehr 5
E Java Applet bearbeiten Tools - Maven, Gradle, Ant & mehr 8
J Webstart Grenzen von Java Webstart? Tools - Maven, Gradle, Ant & mehr 2
B Buckminster: Plugin Version in Java source File einfügen Tools - Maven, Gradle, Ant & mehr 4
T Ant ant-variable aus Java Tools - Maven, Gradle, Ant & mehr 4
F Ant ANT javac class-Dateien von entfernten JAVA-Klassen löschen Tools - Maven, Gradle, Ant & mehr 11
J Java Webstart beschleunigen und Verlauf anzeigen Tools - Maven, Gradle, Ant & mehr 3
H Java Applet Problem beim einbinden in HTML Tools - Maven, Gradle, Ant & mehr 3
L PHP + Java Applet Kommunikation Tools - Maven, Gradle, Ant & mehr 9
S Probleme mit Kombination Java JApplet;MySQL;Webserver Tools - Maven, Gradle, Ant & mehr 3
nabla Einbinden von externen Java und C Bibliotheken Tools - Maven, Gradle, Ant & mehr 5
G Java-Applet Probleme beim Browser Tools - Maven, Gradle, Ant & mehr 14
A Java-Applet Sandbox deaktiviren? Tools - Maven, Gradle, Ant & mehr 2
B Java-Applet geht nicht (auf dem Webserver) Tools - Maven, Gradle, Ant & mehr 9
I In Java Applets drucken Tools - Maven, Gradle, Ant & mehr 2
D Java Webstart startet .jar file nicht Tools - Maven, Gradle, Ant & mehr 13
S Java Applet per Klick starten? Tools - Maven, Gradle, Ant & mehr 6
U Java Webstartproblem ab Version 1.6_11 Tools - Maven, Gradle, Ant & mehr 7
S Java Ant per Console starten Tools - Maven, Gradle, Ant & mehr 3
M Java Applet - enforce use of older JRE Tools - Maven, Gradle, Ant & mehr 3
N Wie Java-Programm zu Applet machen?! Tools - Maven, Gradle, Ant & mehr 2
M Java Swing Anwendung als Webanwendung Tools - Maven, Gradle, Ant & mehr 6
Raidri Java Programme installieren Tools - Maven, Gradle, Ant & mehr 5
S Java Webstart Tools - Maven, Gradle, Ant & mehr 3
V applet Java 1.6 -> 1.5 Problem ... wie mit Ant zu lösen? Tools - Maven, Gradle, Ant & mehr 7
E Java Applet - Double Buffering Problem (Flackern) Tools - Maven, Gradle, Ant & mehr 6
S Java-Applet Steuerung IO Karte am Drucker-Port Tools - Maven, Gradle, Ant & mehr 4
T Java Anwendung installieren Tools - Maven, Gradle, Ant & mehr 7
T Statistiken zur Verbreitung von Java Tools - Maven, Gradle, Ant & mehr 5
D Java-Anwendung mit Bildern (JPG) verfügbar machen Tools - Maven, Gradle, Ant & mehr 7
F Kleines Java-Programm geschrieben, 30 Dateien? Tools - Maven, Gradle, Ant & mehr 16
T Applet soll Java Programm starten Tools - Maven, Gradle, Ant & mehr 2
P Java-Applet funktioniert unter WINXP nicht Tools - Maven, Gradle, Ant & mehr 2
N Java 1.6 Applet auf älteren Versionen ausführbar? Tools - Maven, Gradle, Ant & mehr 4
F Probleme mit Java WebStart; Hauptklasse konnte nicht gef. Tools - Maven, Gradle, Ant & mehr 18
J Java Applet bei mouseover mit Tooltip Tools - Maven, Gradle, Ant & mehr 3
M Autostart unter Windows für Java Aplikation Tools - Maven, Gradle, Ant & mehr 10
J ANT: run/java: NoClassDefFoundError Tools - Maven, Gradle, Ant & mehr 2
C chatProgramm in java Tools - Maven, Gradle, Ant & mehr 5
L Java Webstart Tools - Maven, Gradle, Ant & mehr 6
B Java-Applet startet nicht aus dem Browser Tools - Maven, Gradle, Ant & mehr 1
K Java-Applet Uhrzeit Tools - Maven, Gradle, Ant & mehr 2
T Java Applett: Rückwärtskompabilität Tools - Maven, Gradle, Ant & mehr 2
G JApplet parallel zu Java-Applikation entwickeln Tools - Maven, Gradle, Ant & mehr 11
H [gelöst] Java Stimmgerät bzw. Frequenzerzeugung gesucht Tools - Maven, Gradle, Ant & mehr 2
A RSS-Feeds auslesen mit JAVA speichern und Applet übergeben Tools - Maven, Gradle, Ant & mehr 2
D Java Web Start im Browser laufen lassen Tools - Maven, Gradle, Ant & mehr 10
W Java-Applet Funzt ned! Tools - Maven, Gradle, Ant & mehr 3
V dreieck ausfüllen (java) Tools - Maven, Gradle, Ant & mehr 6
M Java Security Tools - Maven, Gradle, Ant & mehr 2
B Java Applet im Systemtray Tools - Maven, Gradle, Ant & mehr 2
P Java Applets und Power Point Tools - Maven, Gradle, Ant & mehr 11
G Jar File Java Web Start Tools - Maven, Gradle, Ant & mehr 2
H Java 1.4 Applet, IE 6 und Java 6 funktioniert nicht zusammen Tools - Maven, Gradle, Ant & mehr 2
B Jukebox mit Java [Html Applet] Tools - Maven, Gradle, Ant & mehr 11
J Gästebuch mit Java Tools - Maven, Gradle, Ant & mehr 11
A Hilfe! Java Applet Lake von Anfy - wie in HP einbinden? Tools - Maven, Gradle, Ant & mehr 25

Ähnliche Java Themen


Oben