gpt4 book ai didi

java jButton.doClick() 不执行该功能(但单击按钮)

转载 作者:行者123 更新时间:2023-12-01 05:01:38 25 4
gpt4 key购买 nike

我正在制作一个计算器,使用文本字段来显示结果并允许用户输入数字和运算(无需单击按钮)。在文本字段中,当用户输入某些内容时,我遇到问题,如果它是有效的字符,我想在相应的按钮中执行 .doClick() 。我可以看到模拟点击按钮,但“cerebro”方法没有执行。哪里有问题?谢谢。

这是执行 doClick() 的代码:

    private void campotextoKeyPressed(java.awt.event.KeyEvent evt) {
char teclapulsada = evt.getKeyChar();

switch(teclapulsada){
case '0': b0.doClick();
break;
case '1': b1.doClick();
break;
case '2': b2.doClick();
break;
case '3': b3.doClick();
break;
case '4': b4.doClick();
break;
case '5': b5.doClick();
break;
case '6': b6.doClick();
break;
case '7': b7.doClick();
break;
case '8': b8.doClick();
break;
case '9': b9.doClick();
break;
}

}

此方法在用户单击按钮时进行操作:

double operando1 = 0;
double operando2 = 0;
char operador = ' ';
private void cerebro(java.awt.event.MouseEvent evt) {
javax.swing.JButton botonllamador = new javax.swing.JButton();
botonllamador = (javax.swing.JButton) evt.getSource();

try {
int pulsacion = Integer.parseInt(botonllamador.getText());
if (pulsacion >= 0 && pulsacion <= 9) {
if (campotexto.getText().equals("0")) {
campotexto.setText(botonllamador.getText());
System.out.println("HOLE 0");
} else {
campotexto.setText(campotexto.getText() + botonllamador.getText());
System.out.println("HOLA 1");
}
}
} catch (Exception e) {
//Si pulsas algo que no sea un número
String operacion = botonllamador.getText();
//Si ya hay un operador introducido, hacemos la operacion
if (operacion.equals("CE")) {
if(operador != ' '){
int posoperador = campotexto.getText().indexOf(operador);
campotexto.setText(campotexto.getText().substring(0, posoperador+1));
}else{
campotexto.setText("0");
}
} else if(operacion.equals("C")) {
operando1 = 0;
operador = ' ';
campotexto.setText("0");
System.out.println("CAMPOTEXTO ES "+campotexto.getText());
} else {
if (operador != ' ') {
//Si es un operador, buscamos la posicion, substring para el operando 2 y hacemos la operacion
int posoperador = campotexto.getText().indexOf(operador);
if (posoperador != (campotexto.getText().length()-1)) {
operando2 = Double.parseDouble(campotexto.getText().substring(posoperador + 1));
if (operador == '+') {
System.out.println("CAMPOTEXTO TIENE "+campotexto.getText());
System.out.println("ENTRO EN + Y AHORA CAMPOTEXTO TIENE"+campotexto.getText()+" EL OPERADOR ES "+operador+" OPERACION ES "+operacion);
operando1 = operando1 + operando2;
} else if (operador == '-') {
System.out.println("ENTRO EN - Y AHORA CAMPOTEXTO TIENE"+campotexto.getText()+" EL OPERADOR ES "+operador+" OPERACION ES "+operacion);
operando1 = operando1 - operando2;
} else if (operador == '*') {
System.out.println("ENTRO EN * Y AHORA CAMPOTEXTO TIENE"+campotexto.getText()+" EL OPERADOR ES "+operador+" OPERACION ES "+operacion);
operando1 = operando1 * operando2;
} else if (operador == '/') {
System.out.println("ENTRO EN / Y AHORA CAMPOTEXTO TIENE"+campotexto.getText()+" EL OPERADOR ES "+operador+" OPERACION ES "+operacion);
operando1 = operando1 / operando2;
} else if (operador == '.'){
operando1 = Double.parseDouble(campotexto.getText());
}

if(operacion.charAt(0) == '.'){
campotexto.setText(campotexto.getText()+".");
}else if (operacion.charAt(0) != '=') {
operador = operacion.charAt(0);
campotexto.setText(operando1 + operacion);
System.out.println("ENTRO EN EL FINAL Y AHORA CAMPOTEXTO TIENE"+campotexto.getText()+" EL OPERADOR ES "+operador+" OPERACION ES "+operacion);
} else {

campotexto.setText(String.valueOf(operando1).toString());
System.out.println("ENTRO EN = Y AHORA CAMPOTEXTO TIENE"+campotexto.getText()+" EL OPERADOR ES "+operador+" OPERACION ES "+operacion);
operador = ' ';
operando1 = 0;
}
}
} else {
//Si es la primera vez que se pulsa un operador
operador = botonllamador.getText().charAt(0);
operando1 = Double.parseDouble(campotexto.getText());
if(operador == '='){
operador=' ';
}else{
System.out.println("EN EL ELSE RARO ES "+campotexto.getText());
campotexto.setText(campotexto.getText() + operador);
System.out.println("FIN DEL ELSE RARO ES "+campotexto.getText());
}
}

}
}
}

最佳答案

您可以显示您已经显示的第二种方法的签名吗?通常它应该是实现接口(interface)的类的一部分(如coding.mof所述的ActionListener)或扩展类(如MouseAdapter),并且该类应设置为监听按钮上的操作(使用像addActionListener这样的方法)。

关于java jButton.doClick() 不执行该功能(但单击按钮),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13320979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com