0

そのため、JPasswordField を使用してユーザー入力を取得し、入力されたパスワードの強度に関する即座のフィードバックを提供しています。私の問題は、ユーザーが「非表示」チェックボックスをクリックすると、テキストフィールドの文字列がすぐに「●」でマスクされず、テキストフィールドがフォーカスを取り戻したときにのみ機能することです。mouseListener 内で component.getFocus を使用しようとしましたが、機能していないようです。

この特定のリスナーは次のようになります。

inputT.addMouseListener(new MouseAdapter(){
        @Override
        public void mouseClicked(MouseEvent hideClicked){
            if (hideC.isSelected()){
                inputT.setEchoChar('•');
                inputT.requestFocus();
            }
            if (!hideC.isSelected()){
                inputT.setEchoChar('\u0000');
                inputT.requestFocus();
            }
        }
    });
4

4 に答える 4

0

ユーザーが入力しているパスワード フィールドとは別のフィールドで、ユーザーにフィードバックを表示します。理想的には、GUI のパスワードの右側にある個別の読み取り専用コンポーネントです。パスワード強度のフィードバックは、パスワード フィールドのリスナーによって更新されますが、JPasswordField通常どおりに機能する可能性があります。

于 2013-11-05T19:20:31.553 に答える
0
  • マウスリスナーを使用しないでください。選択を行うには、次を使用しますItemListener

    checkBox.addItemListener(new ItemListener() {
    
        @Override
        public void itemStateChanged(ItemEvent evt) {
            if(evt.getStateChange()==ItemEvent.SELECTED)
               jPasswordField1.setEchoChar((char)0);
           else jPasswordField1.setEchoChar('*');
        }
    });
    

さて、上記のコードは私にとって完璧に機能します。

于 2013-11-05T19:38:00.690 に答える
0

JavaDoc から: http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html#requestFocus%28%29

public void requestFocus()

このコンポーネントが入力フォーカスを取得するように要求します。このメソッドの完全な説明については、Component.requestFocus() を参照してください。

このメソッドの動作はプラットフォームに依存するため、このメソッドの使用はお勧めできません。代わりに、requestFocusInWindow() の使用をお勧めします。フォーカスの詳細については、Java チュートリアルのセクション、フォーカス サブシステムの使用方法を参照してください。

また、MadProgrammer が指摘したように、リスナーは JCheckBox ではなく JPasswordField にあります。

于 2013-11-05T19:36:43.283 に答える