Crystals-DSA-Foren
Java und Swing-Problem - Druckversion

+- Crystals-DSA-Foren (https://www.crystals-dsa-foren.de)
+-- Forum: Allgemeines zur Nordlandtrilogie DOS (https://www.crystals-dsa-foren.de/forumdisplay.php?fid=20)
+--- Forum: Technische Werkstatt (https://www.crystals-dsa-foren.de/forumdisplay.php?fid=34)
+--- Thema: Java und Swing-Problem (/showthread.php?tid=1938)

Seiten: 1 2


RE: Java und Swing-Problem - Boneman - 12.09.2009

Note to self and everybody else: Vergesst die LayoutManager. Macht's gleich selber. Zwei Offsets, eine Schleife und schon sieht das richtig gut aus! Ist an der Stelle auch Unsinn, sich mit dem Quatsch rumzuärgern, da das Menü nicht vergrößert oder verkleinert werden kann.

(Ich glaub, bisher hab ich noch immer, wenn ich vor diesem LayoutManager-Problem stand, irgendwann einfach ohne weitergemacht. :lol:)

Edit: Vorher hab ich noch etwas rumprobiert, GridBagLayout klappte auch ganz gut. Nur war das Problem jetzt, dass das Fenster immer noch zu klein war, da die Ränder, die durch die Rahmentexturen entstehen, nicht berücksichtigt wurden. An der Stelle wurde es mir dann zu kompliziert.

Edit2: Vor allem braucht man ohne LayoutManager viel weniger Code, der zudem eleganter aussieht. ;)


RE: Java und Swing-Problem - Boneman - 05.10.2009

... :rolleyes:

Totally Gridbag!


Edit: Um dem Post noch etwas Sinnvolles hinzuzufügen: Nachdem ich mich gerade mal wieder ein paar Stunden mit diesem Müll rumgeschlagen hab (dieses Mal geht's leider nicht ohne LayoutManager) hab ich im Internet das TableLayout entdeckt. Das erscheint mir bisher auch sehr brauchbar und vor allem sehr unkompliziert - im Vergleich zum Rest jedenfalls. Auf der verlinkten Seite gibt's ne Einführung und Tutorials.


RE: Java und Swing-Problem - Hendrik - 05.10.2009

Da fällt mir ein, ich habe vor Jahren mal ein kleines Werkzeug geschrieben, das einem die Verwendung des GridBag-Layouts erleichtern sollte. Man kann beliebig Elemente hinzufügen und deren Eigenschaften anpassen, so lange, bis es passt. Dann klickt man auf "Generate Code" und kriegt das Layout zusammengebastelt.
Wenn Interesse daran besteht, kann ich dieses Programm ja mal hier hochstellen.


RE: Java und Swing-Problem - Boneman - 02.05.2010

Hat hier mal jemand mit dem Eclipse Abstract Syntax Tree gearbeitet?


RE: Java und Swing-Problem - Rabenaas - 02.05.2010

Pfft. Ich hab' mir mal ein Tutorial angesehen. :D


RE: Java und Swing-Problem - Boneman - 03.05.2010

Gut, dann kennst du ihn ja in- und auswändig und kannst mir sicher sagen, wie ich einen Knoten da einfügen kann (direktes Verfahren, kein ASTRewrite)? :D


RE: Java und Swing-Problem - Rabenaas - 03.05.2010

Meinst Du das hier?

Zitat:Let us have a look at the second way to change an AST. Instead of tracking the modifications in separate protocols, we directly modify the AST. The only thing that has to done before modifying the first node is to turn on the change recording by calling recordModifications() on the root of the AST, the CompilationUnit. Internally changes are logged to an ASTRewrite as well, but this happens hidden to you.

Example 2. Modifying an AST directly.

unit.recordModifications();
// ...
VariableDeclarationStatement statement = createNewVariableDeclarationStatement(manager, ast);
block.statements().add(firstReferenceIndex, statement);



RE: Java und Swing-Problem - Boneman - 03.05.2010

Prinzipiell ja. Das hilft mir nur überhaupt nicht. So weit bin ich schon, dass ich nen neuen Block erstellt und das alte Statement eingefügt habe. Aber wie krieg ich den Block (an der richtigen Stelle) in den Baum? Wie mach ich aus "IfStatement -> Irgendwas" ein "IfStatement -> Block -> Irgendwas"? :confused:


RE: Java und Swing-Problem - Rabenaas - 03.05.2010

Ich würde nach Überfliegen der Doku sagen, dass man man das anvisierte Elternelement vom Typ Block raussucht, in die von statements() gelieferte Liste an der richtigen Stelle das entsprechende Statement (z.B. das ifStatement selbst oder einen Block) einfügt, und dann den modifizierten AST abspeichert.


RE: Java und Swing-Problem - Boneman - 04.05.2010

Was aber, wenn der übergeordnete Knoten kein Block ist, sondern ein if-Statement oder ähnliches? Dort gibt es keine statements(), children() oder sonstwie geartete Methode, die es erlauben würde die Kinder zu verändern. :sad2:

Meine Aufgabe ist es gerade, aus so etwas:
Code:
if (expr)
  stmt;
so etwas zu machen:
Code:
if (expr) {
  stmt;
}



RE: Java und Swing-Problem - Rabenaas - 04.05.2010

Ah, ich würde Folgendes probieren: Das IfStatement ifstmnt raussuchen, den Block block zu erzeugen, und dann ifstmnt.setThenStatement(block); ausführen. Klappt das vielleicht?


RE: Java und Swing-Problem - Boneman - 04.05.2010

Oh Mann! Die Methode gibt's ja wirklich! Und wonach haben wir dann eine Woche lang gesucht? :wall:

Danke, Rabe, vielen herzlichen Dank! :jippie: :respect: