![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Hallo,
ich habe folgende Frage. Ich würde gerne ein Applet schreiben, welches in zwei Teile aufgeteilt wurde. Eine linke und eine rechte Spalte. In der rechten Spalte sollte etwas Dynamisches ablaufen (Beispiel). Wie gehe ich denn jetzt an so etwas heran? Dem Applet einen LayoutManager (z.B. ein GridLayout) hinzufügen und in jede Spalte ein Panel "adden", welches dann die jeweiligen Komponenten enthält? So würde ich da jetzt rangehen .. aber meine ersten Versuche sind irgendwie nicht wirklich von Erfolg gekrönt. Ich habe das Problem, dass ich gar nicht sehe, ob mein LayoutManager eigentlich korrekt verwendet wird. Das verlinkte Beispiel nimmt weiterhin 100% des Applets ein. Ich rufe in der init()-Methode des Applets eine Methode initDemo() auf, welche dann z.B. ein Java Code:
Dort werden also die Standard"sachen" des Applets gesetzt .. unter Anderem eben auch der LayoutManager. Java Code:
Sollte es eine viel bessere Möglichkeit geben zwei unabhängige Teile zu realisieren so hör ich mir das natürlich sehr gerne an. Danke für die Hilfe. Grüße Ben. EDIT: Hm, also das find ich jetzt komisch (aber ich hab natürlich auch keine Ahnung *g*) Java Code:
Code:
java.awt.BorderLayout[hgap=0,vgap=0] EDIT II: Kann es sein, dass es daran liegt, dass ja aufgrund des Threads ständig die repaint()-Methode aufgerufen wird? Wenn ich im linken Panel eine JToolBar mit zwei Buttons hinzufüge sind diese Buttons erstmal nicht sichtbar. Fahre ich aber mit der Maus darüber sind sie für kurze Zeit sichtbar (und zwar genau so lange, wie der Thread "schläft" (sleep()) .. und dann wird neu gezeichnet und die Toolbar bzw. die Buttons sind nicht mehr sichtbar. Erklär mir das doch mal wer .. EDIT III: Eigentlich würde ich den Thread ja gerne nur auf den rechten Teil beziehen. Das wär fein
__________________
Mehr TuS Koblenz geht nicht ... Aktuell ... - Neue Gegner für die TuS: 1.FC Nürnberg - 5 neue Gegner 2008/09 - Informationsveranstaltung für Mitglieder - Förderkasse füllt sich - B-Jugend Rheinlandpokalfinale terminiert - A-Jugend I gewinnt Rheinlandpokal Geändert von Ben (09.02.2006 um 14:10 Uhr). |
|
|
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
|
also eine geneue antwort auf deine fragen kann ich dir leider nicht geben, aber ich würde mal zur übersichtlichkeit den gesamten malvorgang inclusive thread in ein eigenes objekt packen (z.B. ein Panel).
der thread ruft dann immer nur die replaint methode des panels auf und das gesamte applet wird nicht jede sekunde neugezeichnet. so kannst du in aller ruhe(ohne das der thread läuft) dein layout zusammen basteln und das panel an der richtigen position einfügen, danach das ganze mit laufendem thread testen und ich glaube dann wird es funktionieren. wenn hinzugefügte Komponenten nicht direkt angezeigt werden, versuch es mal mit der validate methode. |
|
|
|
|
|
Nach oben #3 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Hallo,
erst mal dank ich Dir für die Antwort. Ich habe das nun mal so gemacht, dass ich zum einen eine Klasse habe, die von JApplet erbt. Dort gibt es nun eine Methode, die folgendes enthält Java Code:
Java Code:
Wenn ich das nun laufen lasse, dann wird diese Toolbar erst angezeigt, wenn ich mit der Maus über die Buttons fahre. Wähle ich anstatt eines JButtons einen Button, also AWT anstatt Swing, dann werden sie angezeigt ... Komisch, komisch .. warum ist das denn so? EDIT: Ich habe Deine obige Antwort eventuell nicht ganz verstanden, was die Auslagerung des Threads angeht. Würde das dann so aussehen, dass die Klasse DynamicPanel von JPanel erbt und das Interface Runnable implementiert?
__________________
Mehr TuS Koblenz geht nicht ... Aktuell ... - Neue Gegner für die TuS: 1.FC Nürnberg - 5 neue Gegner 2008/09 - Informationsveranstaltung für Mitglieder - Förderkasse füllt sich - B-Jugend Rheinlandpokalfinale terminiert - A-Jugend I gewinnt Rheinlandpokal Geändert von Ben (09.02.2006 um 17:48 Uhr). |
|
|
|
|
|
Nach oben #4 |
|
Sesselkleber
Registriert seit: 17.01.2005
Beiträge: 567
|
Also das hier funktioniert bei mir ohne Probleme:
PHP-Code:
Zu deinem Code: .setSize() aufzurufen ist unnötig, Applets wird bereits bei der Einbettung in der HTML-Seite die Größe mitgeteilt die hinterher auch nicht mehr variabel ist. Das setzen der Hintergrundfarbe für das Applet nützt nichts wenn du darauf Panels mit einer anderen Hintergrundfarbe addest und dafür ein Layout vewendest, dass automatisch die Größe des Panels automatisch maximal anpaßt. Du siehst den bunten Hintergrund also nicht. .JApplet.getContentPane() brauch nicht herangezogen zu werden, das ist bei Applets unnötig. Wenn du es trotzdem tust mußt du natürlich auch entsprechend nicht nur dein Layout darauf legen sondern auch alle Komponenten adden. Also: Container content = this.getContentPane(); content.setLayout[...] content.add(new JComponent[...] Gruß Sparrow Geändert von Ben (09.02.2006 um 19:00 Uhr). |
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Okay. Danke. Das funktioniert jetzt erstmal.
Ich nutze hier setSize(), weil ich mir das Applet im AppletViewer anschaue .. und da finde ich das dann ganz hilfreich. Jetzt tritt dann aber auch direkt das nächste Problem auf. Ich starte das Applet und jo .. dann ist erst mal nix zu sehen. Erst wenn ich die Größe des Applets verändere wird das Applet bzw. der Inhalt angezeigt. Und irgendwie .. also .. lassen wir es erstmal bei dieser Frage. Die anderen Probleme, die es noch zu Hauf gibt, kann ich gerade noch nicht so wirklich beschreiben. Kommt dann später Danke erstmal, Grüße Ben. EDIT: Also ... hä? Ich mach hier doch alles falsch. Kann doch echt nicht anders sein Wenn ich folgende Klassen verwende PHP-Code:
PHP-Code:
PHP-Code:
.. erhalte ich das Ergebnis, was man im Anhang bewundern kann Meeeenno .. doof.
__________________
Mehr TuS Koblenz geht nicht ... Aktuell ... - Neue Gegner für die TuS: 1.FC Nürnberg - 5 neue Gegner 2008/09 - Informationsveranstaltung für Mitglieder - Förderkasse füllt sich - B-Jugend Rheinlandpokalfinale terminiert - A-Jugend I gewinnt Rheinlandpokal Geändert von Ben (09.02.2006 um 19:20 Uhr). |
|
|
|
|
|
Nach oben #6 |
|
Erfahrener Benutzer
Registriert seit: 17.08.2005
Beiträge: 425
|
wenn ich das richtig weiß haben die Componenten aus javax.swing das problem, dass sie meist von paint() übermalt werden (auch wenn du nicht direkt irgend etwas drüber malst..) im gegensatz zu java.awt - Componenten.
|
|
|
|
|
|
Nach oben #7 | |
|
Erfahrener Benutzer
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
|
Zitat:
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
|
|
|
|
|
|
Nach oben #8 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Zitat:
Ich habe doch gar kein passendes Objekt!? @Xean: Jou, aber ich will keine AWT-Komponenten nutzen .. und es muss ja auch mit Swing gehen. |
|
|
|
|
|
|
Nach oben #9 |
|
Erfahrener Benutzer
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
|
Na in ControlPanel und FlipperPanel zum Beispiel. Aber erst nach dem adden der Komponenten aufrufen, sonst nützt es nichts.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
|
|
|
|
|
Nach oben #11 |
|
Erfahrener Benutzer
Registriert seit: 23.11.2005
Ort: Stadtallendorf
Beiträge: 139
|
@sparrow
Mein ich doch Hab's mir bis jetzt immer so gemerckt, sorry.
__________________
Die Menschen wünschen sich Unsterblichkeit, aber wissen nichts anzufangen an einem verregneten Sonntag Nachmittag. |
|
|
|