Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo.
Ich habe in meinem Info Unterricht die Aufgabe bekommen, mich in das Thema Gui einzuarbeiten. Der restliche Kurs nimmt vordefinierte Klassen. Ich soll sie selber schreiben. Kann mir jemand einen Tutorital sagen, wo es einfach erklärt wird aber mit keinen schon bestehenden Klassen. Danke.
ich bin auch net grad ein profi aber ich versuchs mal grob zu erklären:
GUI -> Graphical User Interface (Graphische Benutzeroberfläche)
- in java gibts swing und awt um guis zu machen
Beispiel: Kleines Fenster wo in der mitte "Whazzup?!" steht.
Java:
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.FlowLayout;
public class GUI
{
public static void main(String[] args)
{
JFrame f = new JFrame(); //Fenster
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Wie wird das Fenster geschlossen?
f.setSize(200); //Größe
f.setLocationRelativeTo(null); //Fenster zentrieren
f.setLayout(new FlowLayout()); //Eine GUI sollte ein Layout haben -> LayoutManager
JLabel l = new JLabel("Whazzup?!"); //Aufschrift
l.setHorizontalAlignment(JLabel.CENTER); //zentrieren
f.add(l); //Komponenten hinzufügen
f.setVisible(true); //sichtbar? na klar
}
}
graphische oberflächen triffst du überall, z.B. Firefox.
Firefox Buttons (in Java swing z.B JButton) , ein Menü (JMenü), eine Scrollfläche (JScrollPane) usw...
Das besondere an GUI´s ist der Fokus. Wenn du ein GUI angeklickt hast, dann ist es im Fokus (erkennst du an der Farbe).
Auch Fehlermeldungen sind GUI´s (Microsoft-Lösungen -> Error (Rotes Kreuz) -> blablabla not found^^)
joa. oben is ein link zu Java ist auch eine Insel. Auch bekannt als : Die Bibel 3 - jetzt noch heiliger! (Die Bibel 2 ist das neue Testament)^^
Greetings,
Zerker
edit: imports vergessen^^
edit^2: ich nehm an mit vordefinierte klassen ist z.B JFrame , halt die ganzen packages, gemeint.
also der kurs nimmt die oberfläche von bluej udn benutzt dort den programm generator.
im buch von bernad schriek zb. wird die gui ebene schritt für schritt aufgebaut aber mit seinen klassen . ich moechte diese nicht nehmen und wollte daher nach einem passenden tutorital fragen .
also ich möchte gerne mit dem Paket Swing oder Awt arbeiten. Bei der Insel finde ich es doof, dass beides gemacht wird. die tuts, die ihr mir gegeben hat, finde ich nicht so gut(komme ich nicht gut mit zurecht). mit gailer-net bin ich eig immer ganz gut gefahren, aber leider sind die Gui Themen auf Englisch. Kann mir einer ein ähnliches tut posten, wie gailer-net. danke
edit: Was ist eig der Unterschied von Swing und AWT. AWT nutzt doch die Fenster und Knöofe und so weiter von der Plattform und Swing zeichnet das selbst, oder nicht? weil in der insel davon gesprochen wird, dass Swing von AWT Klassen abgeleitet wird.
Der erste Teil stimmt, aber mit dem (Teil)Satz "dass Swing von AWT Klassen abgeleitet wird" wäre ich vorsichtig. Nach dem, was ich (irgendeinmal) herausgefunden hab, sind JFrame und JApplet, also die top-level components von den korrespondierenden AWT components abgeleitet, aber die Controls und Container von Swing sind von JComponent abgeleitet, das von Container abgeleitet ist.
ok. und womit kann ich besser arbeiten, Swing oder AWT ? bin eher ein Anfänger. und wie muss ich mir das eig vorstellen , dass Swing alles selber zeichnet. alles wird doch von object abgeleitet. und object bietet doch keine methoden an zum zeichnen. heißt das dann, dass JFrame zum Beispiel mit der Konsole arbeitet und ein zeichen Dienst anbietet.
edit: ich bitte noch um ein gutes tut. das sind meine ha für donnerstag.
Das wird mit einem Graphics-Objekt gemacht, das über JNI auf native Methoden zugreift. Ich finde, Java ist auch eine Insel ist ein recht gutes Tut, man muss sich nur mal dahinter setzten.
Nimm Swing, AWT macht - aus gutem Grund - kein Mensch mehr. Natürlich benutzt Swing Klassen vom AWT (z.B. Font, Graphics oder Dimension), aber das ist in Ordnung. Hauptsache, du verwendest nur Komponenten und Container mit einem J davor (also JButton und nicht Button), dann ist alles in Butter.
eine Frage habe ich noch. bei gailer-net wird eine neue Klasse abgeleitet von der Basisklasse JFrame. in der subklasse wird die paint() Methode überschrieben, sodass jetzt ein neuer String im Frame gezeichnet wird. Es ist davon die Rede, dass es eine System Methode ist. was soll das denn sein ? ^^ und wie ist es möglich, dass diese neue Methode beim Erzeugen eines Frames benutzt wird. Wenn ich eine Subklasse habe, wird ja zuerst der Konstruktor der OBerklasse aufgerufen, welcher in dem Fall schon etwas in den Frame zeichnet, da die Klasse schon die paint Methode hat. und erst dann wird der Konstruktor der Subklasse aufgerufen wo dann auch die MEthode paint ueberschrieben wird.
oder verstehe ich da was flasch ?
danke. wird auch die letzte frage für heute sein ^^ will ja nicht jemandem auf die nerven gehen
Die Methode wird nicht erst überschrieben, wenn der Konstruktor überschrieben wird, die ist schon überschrieben, wenn die VM die Classfiles geladen hat.
Mensch, das ist doch kein Chat, sondern ein Forum. Übe dich etwas in Geduld.
Ein Konstruktor zeichnet nichts. Da wird ein Objekt konstruiert. Dieses Objekt hat die von dir überschriebene paint-Methode, die irgendwann mal von irgendwem aufgerufen wird und zeichnet das, was auch immer du da zeichnest.
mh. wie wird das denn sonst gemacht, wenn der konstruktor nicht den befehl zum zeichnen gibt. ich meine wenn ich JFrame frame = new JFrame("Hello"); schirebe, wird ja nur der Konstruktor aufgerufen , und es wird schon was geschrieben. ?
An irgendeiner Stelle - z.B. bei setVisible(true) oder so - wird Swing mitgeteilt, dass da was ist, was gezeichnet werden muss. Swing hat einen eigenen Thread zum Zeichnen und Abarbeiten der Events, und merkt sich auch die zu zeichnenden Objekte. Irgendwann meint der Swing-Thread, dass es doch nett wäre, wieder einmal den Bildschirminhalt zu aktualisieren. Dann schaut er sich an, was er alles zeichnen muss, bringt es in eine ordentliche Reihenfolge, und ruft die ganzen paint()-Methoden mit seinem eigenen Graphics-Objekt auf (das dann den gezeichneten Inhalt enthält) und malt am Ende den ganzen Kladdaradatsch in ein "richtiges" Fenster vom Betriebssystem (was dann schon weiß, wie es die die Grafikkarte dazu bekommt, den Krempel an den Monitor zu senden).