Я создал несколько JLabels динамически и добавил их в JPanel со следующим кодом (кода должно быть достаточно, чтобы понять проблему, я надеюсь!).
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));
}
Теперь я пытаюсь получить доступ к расположению этих меток, но не получаю ничего, кроме java.awt.Point[x=296,y=63]
, при попытке доступа к ним через следующий код.
System.out.println("Component position [1]: " +
textPanel.getComponent(1).getLocationOnScreen());
Я получаю одинаковую позицию для всех компонентов, а не только для одного.
Также (что более важно) я получаю позицию java.awt.Point[x=0,y=0]
для следующего кода.
System.out.println("Position of Component 1: " + map.get(1).getLocation());
Полагаю, это связано с тем, что JLabels создаются динамически. Однако мне действительно необходимо создавать их динамически, а также действительно необходимо иметь возможность получать их местоположение с помощью getLocation()
.
Пожалуйста, помогите! Возможно, существует другой способ их создания или другой способ доступа к их местоположениям?