Hilfe für Java-Applet

italiano_yunkie

Grünschnabel
Hi,
ich hab demnächst eine Präsentation in der Schule und brauche dringendst Hilfe. So viel Ahnung hab ich nich, ich habe auch schon Tipps bekommen, aber ich bin zu doof, wie es scheint. Und zwar hab ich ein Programm als Application, aber ich will es als Applet haben. WEr mir den richtigen Code hinschreibt hat was gut bei mir (ein Bierchen oder so)
BITTE!
Das Programm ist eine Bücherei und die Daten, die in der Klasse festgelegt sind, sollen ausgegeben werden.

Code:
public class CBuecherei 
{ 

public static void main(String[] args) 
{ 

// Verwaltung der Buecherei erstellen 
CBuch manifest = 
new CBuch("Das kommunistische Manifest","Marx","Karl","Staatstheorie"); 
CBuch lenin = 
new CBuch("Lenin, eine Biographie","le rouge","Danny", "Biografie"); 
CBuch leviathan = 
new CBuch("Der Leviathan","Hobbes","Thomas","Staatstheorie "); 
CBuch road = 
new CBuch("On the road","Kerouac","Jack","Roman"); 
CBuch kommunismus = 
new CBuch("Kommunismus","Mielke","Josef-Erich","Sachbuch"); 
CBuch schatten = 
new CBuch("Netz der Schattenspiele","Hohlbein","Wolfgang","Sci-Fi"); 
CBuch tomorrow = 
new CBuch("The day after tomorrow","Emmerich","Roland","Sci-Fi"); 
CBuch boer = 
new CBuch("Die de Boer-Brueder","de Boer","Frank","Biografie"); 

// Daten ausgeben 
manifest.datenAusgeben(); 
lenin.datenAusgeben(); 
leviathan.datenAusgeben(); 
road.datenAusgeben(); 
kommunismus.datenAusgeben(); 
schatten.datenAusgeben(); 
tomorrow.datenAusgeben(); 
boer.datenAusgeben(); 
} 
} 

class CBuch 
{ 
//Buch-Variablen 
String b_titel; 
String b_name; 
String b_vorname; 
String b_genre; 

CBuch(String pTitel, String pName, String pVorname, String pGenre) 
{ 
b_titel = pTitel; 
b_name = pName; 
b_vorname = pVorname; 
b_genre = pGenre; 
} 

void datenAusgeben() 
{ 
System.out.println(" Titel : " + b_titel); 
System.out.println(" Name : " + b_name); 
System.out.println(" Vorname : " + b_vorname); 
System.out.println(" Genre : " + b_genre ); 
System.out.println(""); 
} 

}
 
Hmm, was du da hast ist ja wirklich nicht so viel.

Es tut mir leid aber ich find das wirklich nicht okay, es häufen sich mittlerweile die messages von wegen wer mir das programmiert bekommt ein bier ausgegeben oder wer das macht hat was gut bei mir oder bekommt 10 Euro.

Ich glaub manche wissen nicht wieviel arbeit auch hinter solchen kleinigkeiten steckt und wieviel eine stunde eines IT'lers kostet.

Ich geb dir mal nen Tipp:

such mal per google nach: Wie erstelle ich ein Applet und dann versuch das ganze nachzuvollziehen.

Ansonsten nutz die Such funktion des Forums.

Gruss,
Torsten.
 
Es gibt aber nette Menschen, die einem helfen...

ich weiß, es ist viel Arbeit, in anderen Sprachen hab ich das auch schon festgestellt und ich habe selbst auch schon den Leuten geholfen!
Das mit dem Bierchen war ja nur, weil ich es ausnahmsweise mal eilig hab!
ich hab mit lauter Hilfen und dem ganzen Zeug schon einige Stunden kang dran gesessen und zich Seietn durchgeschaut. Das, was ich gesucht hab hatte keiner: Wie integriere ich eine Klasse in ein Applet... das hab ich einfach nich gefunden
Wenn du es nich machen willst okay, versteh ich, aber vielleicht ist irgendein andere so nett
 
Code:
import java.applet.Applet;
import java.awt.Insets;
import java.util.Vector;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;


public class CBuecherei extends Applet {

    GridBagLayout gbl = new GridBagLayout();
    Vector<CBuch> cBooks = new Vector<CBuch>();
    JTextArea txtArea = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(txtArea);

    public void init() {

        setLayout(gbl);
        txtArea.setEditable(false);
        gbl.setConstraints(scrollPane, new GridBagConstraints(0, 0, 1, 1, 10, 10, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
        add(scrollPane);

        // Verwaltung der Buecherei erstellen
        cBooks.addElement(new CBuch("Das kommunistische Manifest","Marx","Karl","Staatstheorie"));
        cBooks.addElement(new CBuch("Lenin, eine Biographie","le rouge","Danny", "Biografie"));
        cBooks.addElement(new CBuch("Der Leviathan","Hobbes","Thomas","Staatstheorie "));
        cBooks.addElement(new CBuch("On the road","Kerouac","Jack","Roman"));
        cBooks.addElement(new CBuch("Kommunismus","Mielke","Josef-Erich","Sachbuch"));
        cBooks.addElement(new CBuch("Netz der Schattenspiele","Hohlbein","Wolfgang","Sci-Fi"));
        cBooks.addElement(new CBuch("The day after tomorrow","Emmerich","Roland","Sci-Fi"));
        cBooks.addElement(new CBuch("Die de Boer-Brueder","de Boer","Frank","Biografie"));

        for(CBuch cBook : cBooks) {

            txtArea.append(cBook.datenZurueckgeben());
        }
    }
}


class CBuch {

    //Buch-Variablen
    String b_titel;
    String b_name;
    String b_vorname;
    String b_genre;

    CBuch(String pTitel, String pName, String pVorname, String pGenre) {

        b_titel = pTitel;
        b_name = pName;
        b_vorname = pVorname;
        b_genre = pGenre;
    }

    public String datenZurueckgeben() {

        return new String(" Titel: " + b_titel + '\n' +
                                  " Name: " + b_name + '\n' +
                                  " Vorname: " + b_vorname + '\n' +
                                  " Genre: " + b_genre + "\n\n"
                                 );
    }
}
 
Aehm, was für eine Java Version nutzt du Billie Joe?

Du benutzt doch schon die 1.5er oder?
Wegen dieses befehls:

for (CBuch cbook : cbooks) {
}

Nur so zur info, auch für Italiano_yunkie. Nicht das er unter 1.4 programmiert und hierbei auf probleme stösst.


Gruss,

Torsten
 
Java 5...

http://www.uni-klu.ac.at/~thaichho/javahandbuch/k100043.html#sectlevel4id006003003004

Code:
Vector cBooks = new Vector();
cBooks.addElement((Object) new CBuch(...));

for (Enumeration e = cBooks.elements(); e.hasMoreElements(); ) {

    txtArea.append(((CBuch) e.nextElement()).datenZurueckgeben());
}

Sollte es Probleme geben, wie oben das Programm umändern. Also die Vector Definition neu, die Elemente beim einfügen als Object casten, die Elemente mit Enumeration auslesen und wieder nach CBuch casten... hab das jetzt aber nicht getestet.
 
Hallo!

Nur mal so am Rande. Ich würde die Vector Klasse nur wirklich dann verwenden, wenn eine synchronisierte Collection wirklich absolut notwendig ist(z.Bsp. bei konkurrierendem Zugriff). Eine einfache ArrayList wäre da schon um einiges performanter. Weiterhin sollte man statt einer Enumeration wenn's geht besser auf einen Iterator zurückgreifen. Die beiden tun zwar im Prinzip das selbe jedoch ist Iterator ein "transparenteres" Konzept und wird i.d.R. in der "modernen Java API" bevorzugt verwendet.

Wenn's allerdings nur darum geht 5-6 Enititäten zu verwalten spielt die Wahl der Collection keine so wirklich große Rolle ;-)

Gruß Tom
 
Brauche ich den Teil:

Code:
    GridBagLayout gbl = new GridBagLayout();
    Vector<CBuch> cBooks = new Vector<CBuch>();
    JTextArea txtArea = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(txtArea);

und den Teil:

Code:
        setLayout(gbl);
        txtArea.setEditable(false);
        gbl.setConstraints(scrollPane, new GridBagConstraints(0, 0, 1, 1, 10, 10, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
        add(scrollPane);

denn überhaupt? Mir ist nich so ganz klar was das macht...

Ach, ja genau die oben genannte Stelle funktioniert nicht,
illegal start of expression...
hab´s auch nich hinbekommen zu korrigieren
 
Zuletzt bearbeitet:
Hier die überarbeitete Version, läuft auch bei Java 1.4... sollte es zumindest.

Code:
import java.applet.Applet;
import java.awt.Insets;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;


public class CBuecherei extends Applet {

    GridBagLayout gbl = new GridBagLayout();
    ArrayList cBooks = new ArrayList();
    JTextArea txtArea = new JTextArea();
    JScrollPane scrollPane = new JScrollPane(txtArea);

    public void init() {

        setLayout(gbl);
        txtArea.setEditable(false);
        gbl.setConstraints(scrollPane, new GridBagConstraints(0, 0, 1, 1, 10, 10, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
        add(scrollPane);

        // Verwaltung der Buecherei erstellen
        cBooks.add((Object) new CBuch("Das kommunistische Manifest","Marx","Karl","Staatstheorie"));
        cBooks.add((Object) new CBuch("Lenin, eine Biographie","le rouge","Danny", "Biografie"));
        cBooks.add((Object) new CBuch("Der Leviathan","Hobbes","Thomas","Staatstheorie "));
        cBooks.add((Object) new CBuch("On the road","Kerouac","Jack","Roman"));
        cBooks.add((Object) new CBuch("Kommunismus","Mielke","Josef-Erich","Sachbuch"));
        cBooks.add((Object) new CBuch("Netz der Schattenspiele","Hohlbein","Wolfgang","Sci-Fi"));
        cBooks.add((Object) new CBuch("The day after tomorrow","Emmerich","Roland","Sci-Fi"));
        cBooks.add((Object) new CBuch("Die de Boer-Brueder","de Boer","Frank","Biografie"));

        for(Iterator it = cBooks.iterator(); it.hasNext(); ) {

            txtArea.append(((CBuch) it.next()).datenZurueckgeben());
        }
    }
}


class CBuch {

    //Buch-Variablen
    String b_titel;
    String b_name;
    String b_vorname;
    String b_genre;

    CBuch(String pTitel, String pName, String pVorname, String pGenre) {

        b_titel = pTitel;
        b_name = pName;
        b_vorname = pVorname;
        b_genre = pGenre;
    }

    public String datenZurueckgeben() {

        return new String(" Titel: " + b_titel + '\n' +
                                  " Name: " + b_name + '\n' +
                                  " Vorname: " + b_vorname + '\n' +
                                  " Genre: " + b_genre + "\n\n"
                                 );
    }
}

GridBagLayout gbl = new GridBagLayout();
Instanziert die Klasse GridBagLayout, welche ein Layoutmanager ist.

ArrayList cBooks = new ArrayList();
Speichert eine Liste von Objekten. In deinem Fall alle CBuch Objekte. Hat den Vorteil dass du nicht jedes CBuch Element extra erstellen musst... zB CBuch lenin = new CBuch...

JTextArea txtArea = new JTextArea();
Damit du Text in einem Applet darstellen kannst, brauchst du eine Komponente die Text darstellen kann. Ein Applet wird meist in einem Browser dargestellt. Ein Browser hat keine Konsole (ok, Java-Konsole). Ein Applet kann grafische Komponenten darstellen... so wie Buttons, Textfelder, Pop-Up-Menüs... in diesem Fall eine TextArea, vergleichbar mit der HTML Version.

JScrollPane scrollPane = new JScrollPane(txtArea);
In HTML hat eine Textarea (<textarea></textarea>) standardmäßig einen Scrollbalken, in Java nicht. Deshalb wird die Textarea sogesagt auf eine Scrollbare Fläche gelegt... wenn es denn erforderlich ist, wie in deinem Fall.

setLayout setzt den LayoutManager für unser Applet. Der Layout Manager regelt, wie die Komponenten ausgerichtet werden... zB untereinander, nebeneinander, wieviel Abstand ... es gibt verschiedene LayoutManager, ich habe mich hier für das GridBagLayout entschieden.

txtArea.setEditable(false);
Durch das setzen von editable false kannst du den dargestellten Text in der TextArea nicht verändern. Setzte es auf true bzw. lass die Zeile weg und du kannst etwas in die TextArea eintippen... so als würdest du hier einen Beitrag schreiben.

gbl.setConstraints(scrollPane, new GridBagConstraints(0, 0, 1, 1, 10, 10, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
GridBagConstraints ist eine Klasse die du brauchst, wenn du mit dem GridBagLayout arbeitest. Mit GridBagConstraints definierst du wie und wo die Komponente (Button, Textfield, ...) ausgerichtet wird.

Wir haben ja schon die TextArea auf die Scrollbare Fläche gelegt. Hiermit legen wir nun die "Scrollbare Fläche" auf die Anzeigefläche des Applets... du kannst diese Zeile weglassen, nur wird dir dann nichts angezeigt... weil der Anzeigebereich des Applets keine Komponenten kennt, die er darstellen soll.


Abschließen bleibt zu sagen, ja du brauchst eigentlich all diese Zeilen. Du kannst natürlich andere Wege einschlagen als ich, aber das nützt dir nichts, da du ja noch nicht viel von dem verstehst, was hier eigentlich passiert. Um hier abhilfe zu schaffen, empfehle ich dir folgende OpenBooks:

JavaBuch
Javainsel 4

Und natürlich die Java-Dokumentation. Dort kannst du jede Klasse nachschlagen, die ich verwendet habe...
 
Zurück