2

textfield のすべてのハイライトの選択を無効にする方法。

import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JTextField;

public class CustomFocusListener implements FocusListener {

    JTextField jtextField;

    public CustomFocusListener(JTextField jtextField) {

        this.jtextField = jtextField;
    }

    @Override
    public void focusGained(FocusEvent e) {

        jtextField.selectAll();

    }

    @Override
    public void focusLost(FocusEvent e) {

        jtextField.getHighlighter().removeAllHighlights();
    }

}

現在のコードはコンテンツを非表示にするだけです...誰が助けてくれますか?

4

4 に答える 4

2

JTextField のテキストの色と選択の色を変更するには、次の 2 つの方法を使用できます。

setSelectedTextColor

選択色の設定

ただし、別のルック アンド フィールを使用する予定がある場合は、これを行うことはお勧めしません。

于 2012-05-06T20:04:31.873 に答える
1

1)jtextField.selectAll();

Focusは単純な非同期であり、論理的には次のようになる可能性があります

SwingUtilities.invokeLater(new Runnable() {

    @Override
    public void run() {
        JTextField.selectAll();
    }
});

しかし、この形で私のために働きます

SwingUtilities.invokeLater(new Runnable() {

    @Override
    public void run() {
        JTextField.setText(JTextField.getText()); 
        JTextField.selectAll();
        JTextField..requestFocus(); //requestFocusInWindow() I can't see diff
    }
});

2)jtextField.getHighlighter().removeAllHighlights();

3)JTextComponentそこにいるからDocument / DocumentListener

于 2012-05-06T21:03:59.303 に答える
1

設定するだけ

jtextField.setSelectionEnd(0); メソッド onFocusLost(); で

于 2012-05-07T06:08:30.213 に答える