現在、次の問題が発生しています。実行時のコンポーネント位置の更新
実行時にコンポーネントの位置を動的に更新する必要があります。私は外部アプリケーション用のフォームエディタを作っています。標準Swingコンポーネントのラッパークラスを使用しています。現在はJPanel
とJLabel
です。パネルはTableLayout
を使用しています。私は各コンポーネントのフィールドに各コンポーネントの位置を格納しています。何かが変更されたとき、私は再帰的にすべてのポジションを更新する必要があります。ポジションを更新する方法は次のとおりです。
私は知っていますが、それは機能しません。すべてのコンポーネントは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);
}
お勧めはありますか?
違いはありますが、将来参照するにはrevalidate()に続けてrepaint()を行う必要があります。順序が重要なことがあります。 – camickr