Wie getLocation() in JPanel von JLabel wurde dynamisch Hinzugefügt?

Habe ich eine Reihe von JLabels dynamisch und haben Sie in ein JPanel mit dem folgenden code (der code sollte ausreichend sein, um das problem zu verstehen hoffe ich!).

    JPanel textPanel = new JPanel();
    map = new HashMap<Integer,JLabel>();
    vec = new Vector<JLabel>();
    for(int i = 0; i<getCount();i++){ //getCount() returns int
               JLabel label = new JLabel(getItemText(i)); //getItemText() returns String
               map.put(i, label);
               vec.add(label);
               textPanel.add(map.get(i));
    }

Jetzt versuche ich, um auf den Speicherort dieser Aufkleber aber nichts bekommen, aber java.awt.Point[x=296,y=63] für Sie, wenn Sie versuchen, auf Sie zuzugreifen über den folgenden code.

System.out.println("Component position [1]: " +
textPanel.getComponent(1).getLocationOnScreen());

Bekomme ich die gleiche position für alle Komponenten, nicht nur für das eine.

Auch (noch wichtiger) bekomme ich die position java.awt.Point[x=0,y=0] für den folgenden code.

System.out.println("Position of Component 1: " + map.get(1).getLocation());

Ich vermute dies ist mit der Tatsache zu tun, dass die JLabels dynamisch erzeugt werden. Ich wirklich müssen Sie dynamisch erzeugt, aber, und auch wirklich müssen in der Lage sein, um Ihre Lage über getLocation().

Bitte Hilfe!!! Vielleicht gibt es einen anderen Weg, um Sie zu erstellen oder eine Möglichkeit zum Zugriff auf Ihren Standort(s) anders?

  • "code sollte ausreichend sein, um das problem zu verstehen hoffe ich!" Ein SSCCE ist in der Regel genug, um zu erklären, ein problem. Oder zumindest zu kompilieren, ausführen und sehen das problem.
  • aus Neugier, was für ein problem versuchst du zu lösen?
  • Ich versuche, die Anzeige einer Reihe von Strings, so dass ich zugreifen kann die Lage jedes Wort ("token"). Das Wort Strings sind, was ich mit der getItemText() Methode. Letztlich will ich zeichnen konstituierenden Bäume oben auf den JLabels. Wenn jemand einen besseren Weg, bitte shoot 'em meinen Weg :). Danke!
InformationsquelleAutor s.d | 2011-08-20
Schreibe einen Kommentar