2017-05-16 2 views
0

コンポーネントからクリックしたときにテキストをJTextFieldに設定するにはどうすればよいですか?私はそれをリセットすることができますどのようにテキストフィールドを、オフクリックJTextFieldをクリックしたときにテキストを設定する方法は?

// Clears the "Enter text here..." when clicked 
    commandLine.addMouseListener(new MouseAdapter(){ 
     @Override 
     public void mouseClicked(MouseEvent e){ 
      commandLine.setText(""); 
     } 
    }); 

しかし、: 私はそれをクリックするたびに、それはこのようなテキストをクリアするのだろうか? FocusEventを試しましたが、私が望むように動作しませんでした。

+0

プレースホルダを実装しようとしていますか? – Ollaw

+0

実際に何を意味するのか分かりませんが、JTextFieldを "ここにメッセージを入力してください..."と書いていますが、JTextFieldをクリックするとメッセージは消えます。クリックすると、同じメッセージがもう一度表示されます。 – Timppa

+0

これはプレースホルダです。テキストを入力すると、そのテキストが残っていますか? – Ollaw

答えて

1

TextFieldにFocusListenerを追加するだけでいいと思います。ここにあなたが望むように私が書いたクラスがあります。

class CustomPlaceholderTextField extends JTextField implements FocusListener { 

private static final long serialVersionUID = 1L; 
private boolean changedText = false; 
private final String placeholder; 


public CustomPlaceholderTextField(String placeholder){ 
    super(); 
    this.placeholder = Objects.requireNonNull(placeholder); 
    this.addFocusListener(this); 
    super.setText(placeholder); 

} 

@Override 
public String getText() { 
    if (this.changedText) { 
     return super.getText(); 
    } else { 
     return ""; 
    } 
} 

@Override 
public void setText(String t) { 
    if (t == null || t.isEmpty()) { 
     super.setText(this.placeholder); 
     this.changedText = false; 
    } else { 
     super.setText(t); 
     this.changedText = true; 
    } 
} 

@Override 
public void focusGained(FocusEvent e) { 
    if (!this.changedText) { 
     super.setText(""); 
     this.changedText = true; 
    } 
} 

@Override 
public void focusLost(FocusEvent e) { 
    if (this.getText().isEmpty()) { 
     super.setText(this.placeholder); 
     this.changedText = false; 
    } else { 
     this.changedText = true; 
    } 
} 

}

+0

それはクールに見えますが、commandLine.FocusEventのように追加する方法はありますか?私は別のクラスを作成する必要はありません、ちょっとした方法ですか? – Timppa

+0

そして問題は私がプロパティに行ってそこで編集しない限り、実際にそのスクリプトを編集することができないように、私はWindowBuilder(NetBeansで)を使ってGUIを作成したことです。 – Timppa

+0

TextFieldにFocusListenerを追加し、focusGained()とfocusLost()を実装します。 – Ollaw

関連する問題