s.d*_*s.d 2 java swing location components dynamic
我已经动态创建了许多JLabel,并使用以下代码将它们添加到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));
}
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试访问这些标签的位置,但java.awt.Point[x=296,y=63]在尝试通过以下代码访问它们时只为他们获取.
System.out.println("Component position [1]: " +
textPanel.getComponent(1).getLocationOnScreen());
Run Code Online (Sandbox Code Playgroud)
我为所有组件获得相同的位置,而不仅仅是那个组件.
(更重要的是)我得到java.awt.Point[x=0,y=0]以下代码的位置.
System.out.println("Position of Component 1: " + map.get(1).getLocation());
Run Code Online (Sandbox Code Playgroud)
我猜这是因为JLabels是动态创建的.我真的很需要但是动态地创建他们,也确实需要能够通过得到他们的位置getLocation().
请帮忙!也许有另一种方法来创建它们或以不同方式访问其位置?
创建组件时,它的默认位置为(0,0);
向面板添加组件不会更改此位置.
将所有标签添加到面板后,您需要执行以下操作:
panel.revalidate();
Run Code Online (Sandbox Code Playgroud)
这将调用面板使用的布局管理器,然后将根据布局管理器的规则为每个标签分配一个适当的位置.
| 归档时间: |
|
| 查看次数: |
7467 次 |
| 最近记录: |