私はいくつかのフィールドをそのように追加したグリッドレイアウトの魔女を持っています:
private Component userDetailsTab(final User user) {
final GridLayout details = new GridLayout(2, 1);
details.setMargin(true);
details.setSpacing(true);
details.addComponent(createDetailLabel(Messages.User_Name));
final Component username = createDetailValue(user.getName());
details.addComponent(username);
...
テキストフィールドのラベルを置き換えるレイアウトクリックリスナーもあります。次のようになります。
final TextField tf = new TextField();
details.addListener(new LayoutClickListener() {
private static final long serialVersionUID = -7374243623325736476L;
@Override
public void layoutClick(LayoutClickEvent event) {
Component com = event.getChildComponent();
if (event.getChildComponent() instanceof Label) {
Label label = (Label)event.getChildComponent();
details.replaceComponent(com, tf);
tf.setValue(label.getValue());
}
}
});
将来的には、ラベルのクリックを有効にして編集し、別の場所 (別のラベルなど) をクリックした後にデータベースに変更を書き込みたいと考えています。
1 番目のラベルをクリックしてから 2 番目のラベルをクリックすると、効果は次のようになります。なぜそのようになるのでしょうか?1st をクリックしてから 2nd をクリックした後、1st の 1st ラベル ウィッチ値を取得するにはどうすればよいですか?