Zum Inhalt springen

[SWING] ComponentResized auf Parent-Elemente verhindern


Aiun

Empfohlene Beiträge

hi,

folgendes Konstrukt:

ich habe eine Gui (JFrame) bestehend aus einem JScrollpane und einem JDesktopPane, in dem Scrollpane ist ein JTree.

bei Start der Applikation setze ich eine bestimmte größe und richte die Gui Objekte absolut aus (z.Z. JBuilder-XYLayout)

für das Fenster gibt es einen EventListener der auf ComponentResized reagiert und den DesktopPane dann mit .setbounds() vergrößert. Am Scrollpane / JTree soll sich soweit nichts ändern.

funktioniert auch !

Problem: wenn ich auf einen der Dialoge IM DesktopPane klicke oder diese Resize, setzt sich das DesktopPane und vermutlich auch der rest zurück in die beim Start festgelegte größe.

Die initialisierung unsw. steht im Konstruktor bzw. eine im Konstruktor aufgerufene Methode.

ich habe keine Ahnung wo ich da verhindern kann, das er das DesktopPane zurücksetzt...geschweige denn wo ich eigentlich suchen soll und hoffe ihr könnt helfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da kann ich dir nur einen Tipp geben, keinen konkreten Lösungsvorschlag.

Breakpoint setzen. Debugger starten. Reinhängen und Fehler suchen.

Könnte es vielleicht auch sein, dass du an irgendeiner Stelle die Methode pack() deines JFrames aufrufst? Wenn ja, dann auf jeden Fall dort reindebuggen.

Was dein Layout angeht, kann ich nur nochmal wärmstens empfehlen, dich auf jgoodies.com mit dem Framework forms zu versorgen. Dort gibt es das FormLayout. Wirklich sehr guter LayoutManager.

Wer weiß, vielleicht liegt es ja sogar an deinem XYLayout. Ist ja schließlich "nur" ein Borland-Erzeugnis.... ;)

Schönen Gruß.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Breakpoint setzen und debuggen geht nicht wirklich. Was da aufgerufen wird ist keine von meinen Methoden, sondern irgendwas gegebenes vom Layout, Component oder JFrame...wenn ich es wüsste währe mein Problem schon fast gelöst :)

hab jetzt mal mit einem anderen Absolut-Layout versucht...gleiches Ergebnis....daran liegt es nicht.

habe bisher auch nichts gefunden um die Constraints im nachhinein zu ändern....

Form vom Jgoodies...naja...ist wieder "nur" ein TabellenLayout....und ich hab ein paar dinge die da einfach nicht machbar sind.

trotzdem danke für den Link...sind andere nette sachen drauf.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was da aufgerufen wird ist keine von meinen Methoden, sondern irgendwas gegebenes vom Layout, Component oder JFrame...
Mit einer ordentlichen Entwicklungsumgebung (bestimmt auch schon mit einem etwas besseren Editor) kannst du auch dort problemlos reindebuggen. Ja, selbst wenn die Klassen nicht von dir kommen. Im JDK von Sun werden die Sourcen nämlich mitgeliefert.

Das lasse ich also nicht als Ausrede gelten... ;)

mir ist bisher noch nichts untergekommen, was sich mit dem FormLayout nicht machen lässt.
Dem kann ich nur zustimmen.

Auch wenn dein Problem nix damit zu tun hat, ist FormLayout äußerst flexibel. Wirklich sehr vielseitig einsetzbar und obendrein noch komfortabel. Und deiner Beschreibung nach scheint mir dein Layout alles andere als komplex, so dass es mit dem FormLayout absolut klappen sollte.

Also auch die "nur ein TabellenLayout"-Ausrede lasse ich nicht gelten. ;)

...aber B2T:

Versuch dich wirklich mal rein zu debuggen. Das ist sowieso etwas, was man auch im "Echten Leben" mitunter sehr häufig braucht. Die Möglichkeit, zu debuggen, sollte man nicht so leichtfertig zur Seite legen. Das ist echt wichtig!

Link zu diesem Kommentar
Auf anderen Seiten teilen

im Bezug auf mein Problem ist es egal ^^

ich will erstmal wissen was das Hauptfenster damit zu tun hat, wenn ich einen Internalframe resize, welche Methode wird da aufgerufen und warum ?

ich habe in den Code des jetzigen Absolut-Layouts mal reingesehen...da ist nichts was auf ein Resize oder so reagieren würde.

Warum kein Tabellenlayout ?

"nicht möglich" dürfte die falsche Formulierung sein, soweit ich erkennen kann geht damit recht viel. Allerdings müsste ich mich jetzt erstmal gut darin einarbeiten um mit der Lib umzugehen.

Da ich meine Projekte "auch" mache um mich beruflich zu bilden...und ich auf der arbeit nunmal nicht jede Library nehmen darf, muss ich auch mit dem klarkommen was mir die IDE bietet, oder zumindest wissen was los ist, um entscheiden zu können was gemacht wird.

werd mich sicher auch noch mit Form beschäftigten...

wie gesagt, mit dem Problem dürfte es nichts zu tun haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist leider schwer zu sagen ohne Sourcen.

Zeig doch mal deinen Code, soweit du ihn veröffentlichen magst/kannst/darfst... Wenn es nicht zu umfangreich ist, dann bitte möglichst vollständig.

Aber noch mal 'ne Frage:

wenn ich auf einen der Dialoge IM DesktopPane klicke oder diese Resize, setzt sich das DesktopPane und vermutlich auch der rest zurück
Was sind das eigentlich für "Dialoge"? Und meinst du damit, das passiert alles, sobald "diese Dialoge" den Fokus erhalten? Oder erst nach diversen Aktionen?

Nummer 5 braucht Input...

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi, danke für die schnelle Antwort.

z.Z. arbeite ich in dem DesktopPane nur mit einer Klasse, die von JInternalFrame erbt.

Beim erstellen des Internalframes und bei Resize-Events des internalframes tritt der Fehler auf.

Problem Gelöst !

bei Resize des Internalframes wird auch das Resize des DesktopPane ausgelöst. Zwar finde ich seltsam das es dann die Größenangabe aus dem Constraint des Layouts benutzt....

hab jetzt bei Resize des DesktopPane auch das Window-Resize ausgelöst... :)

Hab dann auch mal an der 'richtigen' Stelle debuggen können, aber der Weg verirrte sich in der Eventqueue etz.

trotzdem danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...