2015-04-24 50 views
2

我想提醒用戶當Caps Lock鍵是它在Windows上進行登錄時的方式。我有一個JTextField這應該顯示。我搜索了論壇,發現檢查鑰匙是開還是關,我們使用Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)。但是,我不確定如何將其附加到文本字段。切換大寫鎖定工具提示上的JTextField

注:我不想彈出與大寫鎖定是對消息的對話框。

問題:如何在JTextField上顯示大寫鎖定警告/工具提示?

這裏是我的代碼:

public class CapsLockWarningJTextField { 

private JFrame frame; 

CapsLockWarningJTextField() { 
    frame = new JFrame(); 
    frame.setSize(300, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLayout(new net.miginfocom.swing.MigLayout()); 
    frame.setVisible(true); 
    frame.setLocationRelativeTo(null); 

    JTextField t = new JTextField(10); 

    // if (Toolkit.getDefaultToolkit().getLockingKeyState(
    // KeyEvent.VK_CAPS_LOCK)) { 
    // t.setToolTipText("Caps Lock ON"); 
    // } 

    frame.add(t, "cell 0 0"); 

} 

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 

     @Override 
     public void run() { 
      new CapsLockWarningJTextField(); 

      } 
     }); 
    } 
} 
+0

的可能重複[我怎樣才能獲得大寫鎖定狀態,並將其設置爲on,如果它是不是已經?](http://stackoverflow.com/questions/7435221/how-can-i-get -the-大寫鎖定狀態和設置,這對上,如果-IT-心不是-已經) – Mordechai

+0

@MouseEvent好了,我不希望這種方式。這些問題是不同的!我希望它在登錄時在Windows上的顯示方式中顯示 - 顯示的方式[here](http://guijournal.com/wp-content/uploads/2011/07/Win7-password-Caps -Lock.png)! – JWizard

回答

3

通過在這個問題上遵循建議:Value Change Listener to JTextField您可以將監聽器添加到您的JTextField。

在這種監聽器,你可以檢查是否啓用了Caps Lock每當文件的修改,並警告他們,如果它是。你很可能也想設置一個標誌,所以你只能顯示一次警告,他們可能想要輸入部分或全部密碼。

+0

嗯,這是工作,謝謝。我會玩弄標籤來顯示所需的圖標,如[這裏]所示(http://guijournal.com/wp-content/uploads/2011/07/Win7-password-Caps-Lock.png)。 – JWizard