gpt4 book ai didi

java - 在运行时更新组件位置

转载 作者:行者123 更新时间:2023-12-02 08:07:39 24 4
gpt4 key购买 nike

我目前遇到以下问题:

我需要在运行时动态更新组件定位。我正在为外部应用程序制作一个表单编辑器。我对标准 Swing 组件使用包装类,目前是 JPanelJLabel。面板使用TableLayout。我将每个组件的位置存储在每个组件的字段中。当某些内容发生变化时,我需要递归更新所有位置。这是我更新位置的方法:

 public void updatePositioning() {
Component[] comps = getComponents();
removeAll();
for (Component comp:comps) {
System.out.println("Moving component "+comp + " to x="+pos.get(comp).getX()
+" to y="+pos.get(comp).getY());
c = new TableLayoutConstraints(String.valueOf(pos.get(comp).getX())+","
+String.valueOf(pos.get(comp).getY()));

add(comp, c);
if (comp instanceof EditPanel) ((EditPanel)comp).updatePositioning();
}
repaint();
revalidate();
}

我知道,这很粗糙,但它不起作用。所有组件似乎都属于 0,0 网格单元。正如我通过调试器看到的那样,X 和 Y 是正确的。以下是我向面板添加组件的方法:

public void addComponent(TableLayouted comp, int x, int y) {
c = new TableLayoutConstraints(String.valueOf(x)+","+String.valueOf(y));
add((JComponent) comp, c);
//saving position of the component
pos.put((Component) comp, comp.getTablePositon());
System.out.println("Component "+comp+"added to x="+x+"y="+y);
}

有什么建议吗?

最佳答案

关于java - 在运行时更新组件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7899905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com