如何阻止用户在使用java制作的计算器中添加另一个dot
。
我已经有了我的JTextfield,我想阻止用户输入12.56.1而不是12.561
答案 0 :(得分:0)
而不是计算“。”每一次,这都是一种有效的方式
textField.addKeyListener(new KeyListener() {
int i=0;
public void keyTyped(KeyEvent e) {
if(e.getKeyChar()=='.'){
if(i==1)
e.consume();
else
i=1;
}
}
public void keyPressed(KeyEvent keyEvent) {}
public void keyReleased(KeyEvent keyEvent) {}
});
答案 1 :(得分:0)
如果要对文本组件进行实时验证,最好选择使用`DocumentFilter。
有关详细信息,请参见Text Component Features,特别是Implementing a Document Filter和these examples
不要在文本组件上使用KeyListener
,这会在您使用字段Document
进行操作时导致突变异常。订单事件也不能保证会被提出,这意味着击键可能会在它到达听众之前被消耗掉。
答案 2 :(得分:0)
使用标记防止计算器中出现多个点,例如:
public void actionPerformed(ActionEvent e) {
if(e.getSource()==sevenButton) {
if(isCperatorClicked) {
flag=0;
label.setText("7");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"7");
}
}else if(e.getSource()==eightButton){
if(isCperatorClicked) {
flag=0;
label.setText("8");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"8");
}
}else if(e.getSource()==nineButton){
if(isCperatorClicked) {
flag=0;
label.setText("9");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"9");
}
}else if(e.getSource()==fourButton){
if(isCperatorClicked) {
flag=0;
label.setText("4");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"4");
}
}else if(e.getSource()==fiveButton){
if(isCperatorClicked) {
flag=0;
label.setText("5");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"5");
}
}else if(e.getSource()==sixButton) {
if(isCperatorClicked) {
flag=0;
label.setText("6");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"6");
}
}else if(e.getSource()==oneButton) {
if(isCperatorClicked) {
flag=0;
label.setText("1");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"1");
}
}else if(e.getSource()==twoButton) {
if(isCperatorClicked) {
flag=0;
label.setText("2");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"1");
}
}else if(e.getSource()==threeButton) {
if(isCperatorClicked) {
flag=0;
label.setText("3");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"3");
}
}else if(e.getSource()==zeroButton) {
if(isCperatorClicked) {
flag=0;
label.setText("0");
isCperatorClicked=false;
}else {
label.setText(label.getText()+"0");
}
}else if(e.getSource()==dotButton){
if(isCperatorClicked) {
flag=0;
label.setText(".");
isCperatorClicked=false;
}else if(flag==0){
label.setText(label.getText()+".");
flag=1;
}
}else if(e.getSource()==additionButton) {
isCperatorClicked=true;
oldValue=label.getText();
operator=1;
}else if(e.getSource()==multiButton) {
isCperatorClicked=true;
oldValue=label.getText();
operator=2;
}else if(e.getSource()==minusButton) {
isCperatorClicked=true;
oldValue=label.getText();
operator=3;
}else if(e.getSource()==divisionButton){
isCperatorClicked=true;
oldValue=label.getText();
operator=4;
}else if(e.getSource()==clearButton) {
label.setText("");
flag=0;
}else if(e.getSource()==equalButton) {
flag=1;
switch(operator) {
case 1:
newValue=label.getText();
oldValueF=Float.parseFloat(oldValue);
newValueF=Float.parseFloat(newValue);
Result=oldValueF+newValueF;
label.setText(Result+"");
break;
case 2:
newValue=label.getText();
float oldValueF=Float.parseFloat(oldValue);
float newValueF=Float.parseFloat(newValue);
float Result=oldValueF*newValueF;
label.setText(Result+"");
break;
case 3:
newValue=label.getText();
oldValueF=Float.parseFloat(oldValue);
newValueF=Float.parseFloat(newValue);
Result=oldValueF-newValueF;
label.setText(Result+"");
break;
case 4:
newValue=label.getText();
oldValueF=Float.parseFloat(oldValue);
newValueF=Float.parseFloat(newValue);
Result=oldValueF/newValueF;
label.setText(Result+"");
break;
}
}
}