Alguém pode me explicar como funciona com exemplo?
Funcionamento do doclick
J
2 Respostas
I
Esse método ‘emula’ o evento disparado pelo clique em um botão, ou melhor, de acordo com a documentação:
Programaticamente executa um “clique”. Isso é o mesmo que se o usuário tivesse pressionado e soltado o botão.
Fonte: Docs Oracle - Class AbstractButton
Isso é muito usado para obter uma ação que é própria de um clique de botão por meio de teclas de atalho. Por exemplo, suponha que haja o botão btnSalvar que salva os dados de um formulário. Se quisermos acionar o método do botão por meio das teclas de atalho ctrl + s, pode-se usar esse método. Por exemplo:
private void definirAtalhosPainelControle(){
/*Evento Botão Salvar*/
getRootPane().getInputMap(JButton.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_DOWN_MASK), "eventoBtnSalvar");
getRootPane().getActionMap().put("eventoBtnSalvar",
new AbstractAction("eventoBtnSalvar"){
@Override
public void actionPerformed(ActionEvent e) {
if(btnSalvar.isEnabled())
btnSalvar.doClick();
}
});
[...]
}
J
O meu problema é que estou fazendo uma calculadora e trabalhei com concatenação de números double e não String. A concatenação está funcionando, mas quando aperto a tecla de igual e depois digito o número, há uma concatenação do total com o número seguinte, tipo total 421 e numero seguinte 1, fica no campo texto da calculadora 4211. Isso não ocorre quando teclo mais depois do total ou qualquer outra tecla de operação. Pensei usar o doclic para acionar a tecla mais por exemplo e evitar este problema. Bom é o que eu acho que posso fazer. Estou lhe enviando os pedaços do programa envolvidos nisto abaixo:
Parte do botão de igual:
private void botaoigualActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
num2 = Double.valueOf(visor.getText());
if (operacao != ‘<em>’){
switch(operacao){
case ‘+’:
total1 = num1 + num2;
visor.setText((String.valueOf(total1)));
num1 = 0;
num2 = 0;
operacao = '</em>’;
break;
case ‘-’:
total1 = num1 - num2;
visor.setText((String.valueOf(total1)));
num1 = 0;
num2 = 0;
operacao = ‘_’;
break;
case ‘*’:
total1 = num1 * num2;
visor.setText((String.valueOf(total1)));
break;
case ‘/’:
total1 = num1 / num2;
visor.setText((String.valueOf(total1)));
break;
default:
visor.setText(“Operação incorreta”);
break;
Parte do botão de mais, onde não há o problema:
private void botaoadicaoActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
operacao = ‘+’;
num1 = Double.valueOf(visor.getText());
visor.setText(“0”);
}
Parte da concatenação de número que tenho que fazer com double:
public void digitarNumeros(String temp1){
String temp = visor.getText();
double total;
if (Double.valueOf(temp)==0){
visor.setText(temp1);
}else{
total = (Double.valueOf(temp) * 10) + Double.valueOf(temp1);
DecimalFormat df = new DecimalFormat("#.########");
visor.setText(df.format(total));
}
}
Criado 3 de dezembro de 2019
Ultima resposta 3 de dez. de 2019
Respostas 2
Participantes 2
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo