0

私がやろうとしているのは、パネルを動的に編集し、それを (ボーダー) レイアウトに再読み込みすることです。パネルにはテキストフィールドが含まれており、ユーザーがテキストフィールドをパネルに追加または削除できるようにしたいと考えています。私が試したのは次のとおりです。レイアウトからパネルを削除し、別のテキストフィールドをパネルに追加し、パネルをレイアウトに再度追加しました。ただし、これは機能しません (何も起こりませんでした。パネルのみが削除されましたが、新しいテキストフィールドが再追加されていないため、領域は空でした)。レイアウトからパネルを削除し、代わりにその位置 (BorderLayout.EAST) のレイアウトに別のコンポーネントを追加した場合でも。何も起こりませんでした (単に空です)。

これは、機能していないコードの一部です。

vfields[blocks] = new TextField("0"); //add new textfield to the array of textfields
blocks    += 1;
dp.blocks = blocks;
this.remove(values_fields); //remove the values_fields panel from the borderlayout
values_fields.add(vfields[blocks]); //add new component,textfield to the panel
this.add(values_fields, BorderLayout.EAST); //readd the panel to the border layout<-- doesn't work

誰かが私を助けてくれることを願っています。私はJavaに比較的慣れていないので、何か完全に間違っているか何かをしているだけかもしれませんが、自分ではわかりません。

前もって感謝します!

スカイフェ。

4

2 に答える 2

0

パネル全体を取り外す必要はありません。コンポーネントを既存のパネルから削除/追加するだけです。目に見える GUI では、コードの順序は次のようになります。

panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();

さらにヘルプが必要な場合は、SSCCEを投稿してください。

于 2010-10-30T20:49:28.007 に答える
0

再塗装はしないようです。GUI の変更後に次の 2 つのメソッドを呼び出そうとしましたか。

  validate();
  repaint();
于 2010-10-30T18:22:15.887 に答える