JTextField在句点

时间:2018-01-24 16:00:16

标签: java jtextfield keyevent

我正在写一个CashRegister程序,我目前在CashierView上工作,我在那里为收银员添加了一个选项,用于输入客户收到的现金金额。我现在格式化它,以便用户只能输入数字和1个句点。我现在想限制你在这段时间之后输入的数字到两个。我正努力做到这一点。

我评论了我尝试过的一个代码,但没有用,因为它可能很有趣。

感谢所有帮助! BR, 维克多

    private void jCashReceivedKeyTyped(java.awt.event.KeyEvent evt) {                                       
    char c = evt.getKeyChar(); //Allows input of only Numbers and periods in the textfield
    //boolean tail = false;
    if ((Character.isDigit(c) || (c == KeyEvent.VK_BACKSPACE) || c == KeyEvent.VK_PERIOD)) {        
        int period = 0;  
        if (c == KeyEvent.VK_PERIOD) { //Allows only one period to be added to the textfield
            //tail = false;
            String s = getTextFieldCash();
            int dot = s.indexOf(".");
            period = dot;
            if (dot != -1) {
                evt.consume();
            }
        }
       //. if (tail=true){  //This is the code that I tried to use to limit  input after the period to two

           // String x = getTextFieldCashTail();
          //  if (x.length()>1){
             //   evt.consume();
         //   }
       // }
    } 
    else {
        evt.consume();
    }
}  

1 个答案:

答案 0 :(得分:0)

如果您已使用KeyEvent执行此操作,请执行以下操作:

private void jCashReceivedKeyTyped(java.awt.event.KeyEvent evt) {
    char c = evt.getKeyChar(); //Allows input of only Numbers and periods in the textfield
    if ((Character.isDigit(c) || (c == KeyEvent.VK_BACK_SPACE) || c == KeyEvent.VK_PERIOD)) {
        String s = getTextFieldCash();
        int dot = s.indexOf(".");
        if(dot != -1 && c == KeyEvent.VK_PERIOD) {
            evt.consume();
        } else if(dot != -1 && c != KeyEvent.VK_BACK_SPACE){
            String afterDecimal = s.substring(dot + 1);
            if (afterDecimal.length() > 2) {
                evt.consume();
            }
        }
    }
}

希望这会有所帮助。请记住,通过聆听KeyEvent,如果有人将值复制并粘贴到您的JTextField中,则无法捕捉到这一点。如果您想捕获任何可能的输入类型,您将要使用DocumentListener。如果您想知道如何使用DocumentListenerhere是一些代码,用于说明如何在JTextField上使用它。