tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
355
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    phouli89 phouli89 ist offline Rookie
    Registriert seit
    Jun 2011
    Beiträge
    8
    Ich verwende ein JLayeredPane und versuche eine Funktion zu finden mit der man die Reihenfolge in der die Komponenten innerhalb des JLayeredPanen gezeichnet werden zu beeinflussen. Die ausgabe soll als XML gespeichert werden und dabei ist es wichtig in welcher Reihenfoilge ich die Objekte abfrage, standardmäßig bekomme ich die Objekte in umgekehrer Reihenfolge in der ich Sie hinzugefügt habe.

    Frage: Kann man die Herachie bearbeiten? oder gibt es eine gängige Methode um die Reihenfolge zu setzen?

    PS: die 3 Eben des JLayeredPane reichen nicht aus.
     

  2. #2
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    JLayeredPane:

    void setPosition(Component c, int position)
    Moves the component to position within its current layer, where 0 is the topmost position within the layer and -1 is the bottommost position.
    Reicht nicht aus?
     
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  3. #3
    phouli89 phouli89 ist offline Rookie
    Registriert seit
    Jun 2011
    Beiträge
    8
    Ich meinte nur die 3 ebenen falls man auf jeder ebene ein objekt behält, das wäre etwas zu wenig und bevor jmd was falsch versteht dachte ich, schreib ichs dabei.

    Ich habs mit ZOrder versucht, allerdings nützt mir das auch nichts.

    setPosition hört sich gut an, werde ich später mal ausprobieren, vielen dank
     

  4. #4
    phouli89 phouli89 ist offline Rookie
    Registriert seit
    Jun 2011
    Beiträge
    8
    Also setPosition habe ich einfach mal in einem anderen Beispielprogramm verwendet, da funktioniert es auch einwandfrei, allerdings funktioniert es nicht in meiner Hauptanwendung. Ich habe eine Class namens JComponentBounds verwendet um die Objecte auf dem JLayered Pane mit der Maus zu bewegen und skalieren, wenn ich ein Objekt anklicke wird die Position der JLayeredPane geändert und nach oben geschoben.

    Ich probiere jetzt mal ob man die Position statisch festlegen kann und durchforste mal JComponentBounds. Welche Funktion könnte denn noch die Position beeinflussen?

    Beispiel zum Programm:

    JLayeredPane -> JComponentBounds -> JFormatedTextfield
    JLayeredPane -> JComponentBounds -> JLabel
    JLayeredPane -> JComponentBounds -> JTextPane
     

  5. #5
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    Ich muss zugeben, dass ich nicht 100%ig verstehe, was genau und warum du das willst und wo dabei dein Problem liegt...

    Welche Funktion könnte denn noch die Position beeinflussen?
    void moveToBack(Component c)
    Moves the component to the bottom of the components in its current layer (position -1).
    void moveToFront(Component c)
    Moves the component to the top of the components in its current layer (position 0).
     
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  6. #6
    phouli89 phouli89 ist offline Rookie
    Registriert seit
    Jun 2011
    Beiträge
    8
    Beipiel:
    JLayeredPane EditorPane = new JLayeredPane();
    JLabel test1 = new JLabel("TEXT");
    JFormatedTextfield test2 = new JFormatedTextfield("Noch ein Text");

    JComponentBounds test1Scale = new JComponentBounds (test1, 0, 0, true);
    JComponentBounds test2Scale = new JComponentBounds (test2, 0, 0, true);

    EditorPane.add(test1Scale);
    EditorPane.add(test1Scale);
    Problem ist, dass ich JComponentBounds verwende, was eine abgeleitete Klasse von JInternal Frames ist. Innerhalb eine JComponentBounds-Objects liegen JComponents wie z.b. JLabel usw.
    Sobald ich ein Object anklicke wird es in den vordergrund gestellt, aber ich jann keine funktion in JComponentBounds finden die begründet warum die Position wieder verändert wird.

    Beim Anklicken erhält das Object Position 0 und alles anderen Objecte ruchtschen um jeweils einen Platz nach unten in der Reihenfolge. Ich muss die Reichenfolge aber vorher setzen und verhindern das die Reihenfolge durch anklicken beeinflusst wird.

    JComponentBounds: http://wiki.byte-welt.net/wiki/JComponentBounds
     

  7. #7
    Avatar von HonniCilest
    HonniCilest HonniCilest ist offline Mitglied Platin
    Registriert seit
    Jun 2009
    Ort
    Java Insel
    Beiträge
    501
    Jetzt wird es mir ein wenig klarer..
    Lass mich mal kurz zusammenfassen wie ich dein Problem bisher aufgefasst habe:
    1. Du möchtest deine Components in einer Reihenfolge anordnen, weil es wichtig ist diese in einer bestimmten Reihenfolge abzuspeichern
    2. Die Reihenfolge soll beim Klick in die JLayeredPane nicht geändert werden, d.h. die Reihenfolge soll beibehalten werden
    3. Die Components müssen aber auf der JLayeredPane beweglich/skalierbar bleiben
    Besonders das Zusammenspiel aus Punkt 2 und 3 bereitet dir Kopfschmerzen. Ist das so korrekt?

    Meine Idee wäre, eine JRootPane zu verwenden. Eine JRootPane besitzt u.a. eine JLayeredPane, welche du so verwenden kannst wie bisher. Ein wichtiger Punkt ist, dass hier noch eine GlassPane drüberliegt, welche MouseEvents (siehe Punkt 2) abfangen kann. Ich denke man kann es dann auch so hinbekommen, dass man der GlassPane noch ein MouseEvent ausprogrammiert, welches Punkt 3 handhabt.

    siehe http://download.oracle.com/javase/tu.../rootpane.html
    Geändert von HonniCilest (15.06.11 um 14:17 Uhr)
     
    Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
    ...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.

  8. #8
    phouli89 phouli89 ist offline Rookie
    Registriert seit
    Jun 2011
    Beiträge
    8
    Ja genau das brauche ich, tut mir leid wenn ichs etwas umständlich ausgedrückt habe. Ich denke ich werde es mit dem RootPane probieren, da die Software zukünfitig weiterentwicklet werden soll mach ich die Grundsteine lieber solide.

    Vielen Dank
     

Ähnliche Themen

  1. Komponenten
    Von Flasher111 im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 07.01.07, 17:50
  2. Bone Herachie zusammensacken!?
    Von Freakt im Forum Cinema 4D
    Antworten: 7
    Letzter Beitrag: 02.03.06, 18:35
  3. Dropdown Menü Herachie erweitern
    Von Iphax im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 21.09.04, 18:37

Stichworte