1Danke
ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
450
450
EMPFEHLEN
-
Hab da ein Problem mit JPanels resp. JFrames, dies sieht folgendermassen aus:
Ich habe eine JFrame welches eine JScrollPane beinhaltete, dieses beinhaltet wiederum ein JPanel in welchem viele kleine JPanels platziert sind, diese kleinen JPanels simulieren Displays, deshalb werde ich sie nun Displays nennen. Ich ermögliche es nun anhand eines Mouselisteners jedes einzelne Display zu verschieben.
Soweit funktioniert das auch einwandfrei, mein Problem ist aber sobald man die Grösse des JFrames verändert springen die Displays alle in die Ursprungsposition zurück. Wie könnte ich das verhindern?
die Displays, also die vielen kleinen JPanels füge ich mit dem GridbagLayoutManager ins grosse JPanel, oder anders gesagt das grosse JPanel hat ein GridbagLayoutManager gesetzt!
Liegts am LayoutManager oder könnte man irgendwie das repaint des JFrames beim Vergrössern verhindern ?
Hoffe das ich das Problem einigermassen veständlich geschildert habe und mir jemand helfen kann
Danke...
-
Wie setzt du das ganze denn um? Weist du den Komponenten dann auch im Layout die neuen Positionen richtig wieder zu?
-
Hallo,
es liegt am LayoutManager. Es wird auch nichts bringen, das repaint zu verhindern.
Ich habe was ähnliches verwirklicht, wie du im Anhang siehst. Grob gesagt hab ich versucht die Datei-Ansicht im Windows-Explorer nach zu programmieren. bei mir habe ich das Null-Layout genommen und positioniere alles selbst.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Nein, ich verschiebe sie einfach mittels setLocation (siehe Code)
müsste ich die auch im Layoutmanager wieder richtig Positionieren
wenn ja, versuch ich das mal nach dem Mittag und gebe bescheid.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
MouseListener l = new MouseListener(){ public void mousePressed(MouseEvent e) { System.out.println(e.getPoint().x - displayPanel.getLocation().x); System.out.println(e.getPoint().y - displayPanel.getLocation().y); tempX = e.getPoint().x - displayPanel.getLocation().x; tempY = e.getPoint().y - displayPanel.getLocation().y; } public void mouseReleased(MouseEvent e) { displayPanel.setLocation((e.getPoint().x - (int)tempX),(e.getPoint().y - (int)tempY)); } };
-
Wenn du einen LayoutManager nutzt, wird die setLocation ignoriert bei der Positionierung.
Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Hab's jetzt auch mit dem NullLayout erstellt und es klappt einwandfrei!
Danke für die rasche Hilfe euch Beiden
-
Ich habe da noch was übersehen jetzt werden die Scrollleisten des JScrollpane nicht mehr angezeigt, muss ich das noch was ändern das ich jetzt das Nulllayout im JPanel verwende?
-
Das Problem ist, wenn du das NullLayout verwendest, dass die Componente ihre Größe nicht mehr ändert, wenn irgendwas aus dem Bereich rausgeht. Das musste ich auch selbst implementieren. Dazu hab ich den ComponentListener verwendet. Da laufe ich über alle Componenten die im Container drin liegen und passe dann die Größe selbst an.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
ja habe das probem gleich selber bemerkt aber diese Lösung wäre mir so wahrscheinlich nicht in den Sinn gekommen.
Danke und Sorry bin halt noch " jung im Geschäft"Geändert von grossli (07.08.07 um 14:11 Uhr)
-
Es gibt sicherlich noch andere Lösungen, aber das war die, die mir als erstes eingefallen ist.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Hei es ist wieder eine Frage aufgetaucht wie so wird mit setSize beim grossen JPanel die Grösse nicht verändert ?
Code :1
frontPanel.setSize(width, height);
-
Wenn das JPanel sich in einem Container befindet, der auch ein Layout gesetzt hat, setzt das Layout die Größe immer neu.
Hast du das JPanel in einer ScrollPane?
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Ja.
Habs sonst im ersten Beitrag glaubich noch einigermassen verständlich geschildert, wie ich es aufgebaut habe Was muss ich den ändern?Geändert von grossli (08.08.07 um 11:34 Uhr)
Ähnliche Themen
-
Ursprungsposition für Transition elastic bei der Fancybox ändern
Von Jan-Frederik Stieler im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 02.09.10, 19:55 -
div content soll sich automatisch vergrössern wie bei Tabellen
Von mrbong im Forum CSSAntworten: 2Letzter Beitrag: 04.09.09, 15:04 -
User auf Landkarte von innen nach außen platzieren
Von Kipperlenny im Forum PHPAntworten: 5Letzter Beitrag: 18.03.08, 15:22 -
Texturen nach VRML exportieren und platzieren
Von schmief im Forum Autodesk Maya (ehemals Alias)Antworten: 0Letzter Beitrag: 08.06.07, 16:10 -
dokument nach links vergrössern
Von pascalplus im Forum Flash PlattformAntworten: 8Letzter Beitrag: 08.05.05, 16:20





Zitieren


Login





