2017-10-10 12 views
0

Javaに触発されています...実践のための基本的なフォームを作成しています。私は10 +のテキストボックスを持つフォームを持っている、私はユーザーがフィールドを入力し、フィールドを離れるときに白に戻るときにシアンを回すようにフォーマットしたい。テキストが編集されている場合は、赤色に変わり、ユーザーがどのフィールドにいるのか、そしてテキストを編集したのかが表示されます。Java - フォーム全体のフィールドの書式設定

ただし、このフォーカスリスナーとリスナーコードをすべてのテキストボックスに複製するか、フォーム上のすべてのテキストボックスに対してこれを「既定」に設定する方法がありますか?

text_8 = new Text(shell, SWT.BORDER); 
    text_8.addFocusListener(new FocusAdapter() {   @Override 
     public void focusGained(FocusEvent e) { 
      text_8.setBackground(SWTResourceManager.getColor(SWT.COLOR_CYAN)); 
     } 
     @Override 
     public void focusLost(FocusEvent e) { 
      text_8.addModifyListener(new ModifyListener() { 
       public void modifyText(ModifyEvent e) { 
        text_8.setForeground(SWTResourceManager.getColor(SWT.COLOR_RED));     
       } 
      }); 
      text_8.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); 
     } 
    }); 
    text_8.setBounds(10, 341, 76, 21); 

答えて

0

まあ、別の変数にこれらのリスナーを抽出して、ちょうどあなたがしたいすべてのコンポーネントに追加することです最も簡単な方法...

はこのような何か試してみてください:

private static class MyListeners implement ModifyListener extends FocusAdapter 
{ 
    @Override 
    public void focusGained(FocusEvent e) 
    { 
     final Text t = (Text) e.source; 
     t.setBackground(SWTResourceManager.getColor(SWT.COLOR_CYAN)); 
     t.addModifyListener(this); 
    } 
    @Override 
    public void focusLost(FocusEvent e) 
    { 
     final Text t = (Text) e.source; 
     t.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE)); 
     t.removeModifyListener(this); 
    } 
    public void modifyText(ModifyEvent e) 
    { 
     final Text t = (Text) e.source; 
     t.setForeground(SWTResourceManager.getColor(SWT.COLOR_RED));     
    } 
} 
private final MyListeners myListeners = new MyListeners(); 

... 

text_8 = new Text(shell, SWT.BORDER); 
text_8.addFocusListener(myListeners); 
text_8.setBounds(10, 341, 76, 21); 
関連する問題