Ir ao conteúdo

Como usar Focus?


leandroeo

Posts recomendados

Postado

Olá estou fazendo uma calculadora de Fração, e não sei como usar o Focus, tipo assim, quando a pessoa clicar no Botão 0 o 0 tem que ser adicionado no ultimo JTextField selecionado pelo usuario ... "o ultimo campo focado" pelo usuario ... e não sei como fazer, alguém pode fazer um código exemplo pra eu ver o funcionamento por favor? ou indicar um bom tutorial em portugues por favor .... só consigo "focar" um txt que eu defino por exemplo o txtF1n.requestFocus(true); desde já agradeço.

Esse é meu código até agora.


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// importando biblioteca .swing
import javax.swing.JButton; // para componente "botão"
import javax.swing.JFrame; // para componente "janela"
import javax.swing.JLabel; // para componente "etiqueta"
import javax.swing.JPanel; // para componente "painel"
import javax.swing.JTextField; // para componente "campo de texto"

@SuppressWarnings("serial")
// TesteSwing é um frame (herança do JFrame) e implementa ActionListener
public class Calculadora extends JFrame implements ActionListener{

// atributos da classe
private String Foco;
private JPanel painel; // painel é um objeto da classe JPanel
private JButton btnOK; // btnOk é um objeto da classe JButton
private JButton btnSoma;
private JButton btnSubtrai;
private JButton btnMultiplica;
private JButton btnDivide;
private JButton btnPotencia;
private JButton btnLimpar;
private JButton btn1;
private JButton btn2;
private JButton btn3;
private JButton btn4;
private JButton btn5;
private JButton btn6;
private JButton btn7;
private JButton btn8;
private JButton btn9;
private JButton btn0;
private JLabel lblF1n; // é um objeto da classe JLabel
private JLabel lblF1d;
private JLabel lblF2n;
private JLabel lblF2d;
private JLabel lblResposta;
private JLabel lblConta;
private JTextField txtF1n; // é um objeto da classe JTexField
private JTextField txtF1d;
private JTextField txtF2n;
private JTextField txtF2d;


// método construtor
public Calculadora(){
super("Calculadora de Frações"); // frame
setSize(400, 300); // define dimensão do frame
setLocation(400, 200); // define localização do frame
setResizable(false); // define como redimensionamento não possível de ser feito

lblF1n = new JLabel("Fração1 Numerador: "); // instanciando objeto da Classe JLabel ("etiqueta")
lblF1n.setBounds(10, 10, 120, 25); // definindo localização no frame e dimensão
// setBounds(x, y, width, height)
lblF1d = new JLabel("Fração1 Denomiador: ");
lblF1d.setBounds(10, 30, 140, 25);

lblF2n = new JLabel("Fração2 Numerador: ");
lblF2n.setBounds(10, 60, 120, 25);

lblF2d = new JLabel("Fração2 Denomiador: ");
lblF2d.setBounds(10, 80, 140, 25);

txtF1n = new JTextField(); // instanciando objeto da classe JTextField (campo de texto)
txtF1d = new JTextField();
txtF2n = new JTextField();
txtF2d = new JTextField();

txtF1n.setBounds(140, 10, 40, 20); // instanciando objeto da Classe J
txtF1d.setBounds(140, 30, 40, 20);
txtF2n.setBounds(140, 60, 40, 20); // instanciando objeto da Classe J
txtF2d.setBounds(140, 80, 40, 20);

btnOK = new JButton("Exibir Resultado"); // instanciando objeto da classe JButton
btnOK.setBounds(30, 160, 130, 25); // definindo localização no frame e dimensão
btnOK.addActionListener(this); // implementando o ActionListenener no botão "ok"

btnPotencia = new JButton("Potencia");
btnPotencia.setBounds(240, 10, 95, 25);
btnPotencia.addActionListener(this);

btnSoma = new JButton("Somar");
btnSoma.setBounds(190, 40, 95, 25);
btnSoma.addActionListener(this);

btnSubtrai = new JButton("Subtrair");
btnSubtrai.setBounds(190, 70, 95, 25);
btnSubtrai.addActionListener(this);

btnMultiplica = new JButton("Multiplicar");
btnMultiplica.setBounds(290, 40, 95, 25);
btnMultiplica.addActionListener(this);

btnDivide = new JButton("Dividir");
btnDivide.setBounds(290, 70, 95, 25);
btnDivide.addActionListener(this);

btn1 = new JButton("1");
btn1.setBounds(190, 100, 45, 25);
btn1.addActionListener(this);

btn2 = new JButton("2");
btn2.setBounds(240, 100, 45, 25);
btn2.addActionListener(this);

btn3 = new JButton("3");
btn3.setBounds(290, 100, 45, 25);
btn3.addActionListener(this);

btn4 = new JButton("4");
btn4.setBounds(340, 100, 45, 25);
btn4.addActionListener(this);

btn5 = new JButton("5");
btn5.setBounds(190, 130, 45, 25);
btn5.addActionListener(this);

btn6 = new JButton("6");
btn6.setBounds(240, 130, 45, 25);
btn6.addActionListener(this);

btn7 = new JButton("7");
btn7.setBounds(290, 130, 45, 25);
btn7.addActionListener(this);

btn8 = new JButton("8");
btn8.setBounds(340, 130, 45, 25);
btn8.addActionListener(this);

btn9 = new JButton("9");
btn9.setBounds(190, 160, 45, 25);
btn9.addActionListener(this);

btn0 = new JButton("0");
btn0.setBounds(240, 160, 45, 25);
btn0.addActionListener(this);

btnLimpar = new JButton("Limpar");
btnLimpar.setBounds(290, 160, 95, 25);
btnLimpar.addActionListener(this);

lblConta = new JLabel("Conta: ");
lblConta.setBounds(30, 190, 180, 25);

lblResposta = new JLabel("Resposta: ");
lblResposta.setBounds(30, 210, 180, 25);

painel = new JPanel(); // painel é um objeto instanciado da classe JPanel
painel.setLayout(null); // definindo o layout do painel como vazio (nulo)

painel.add(lblF1n); // adicionando ao painel a "etiqueta" Nome
painel.add(lblF1d);
painel.add(lblF2n);
painel.add(lblF2d);
painel.add(txtF1n); // adicionando ao painel o campo de texto
painel.add(txtF1d);
painel.add(txtF2n);
painel.add(txtF2d);
painel.add(btnPotencia); // adicionando ao painel botão
painel.add(btnSoma);
painel.add(btnSubtrai);
painel.add(btnMultiplica);
painel.add(btnDivide);
painel.add(btn1);
painel.add(btn2);
painel.add(btn3);
painel.add(btn4);
painel.add(btn5);
painel.add(btn6);
painel.add(btn7);
painel.add(btn8);
painel.add(btn9);
painel.add(btn0);
painel.add(lblConta);
painel.add(lblResposta);
painel.add(btnOK);// adicionando ao painel o botão "ok"
painel.add(btnLimpar); // adicionando ao painel o botão "Limpar"

add(painel); // deste modo, passa a não ser necessário fazer: frmFrame.add(painel);
setVisible(true); // definindo o painel como visível
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // definindo por default que a operação se encerra quando fechar a janela

}

public void limpar(){
// método para limpar a caixa de texto quando botão "limpar" for acionado
txtF1n.setText("");
txtF1d.setText("");
txtF2n.setText("");
txtF2d.setText("");
lblResposta.setText("Resultado: ");
lblConta.setText("Conta: ");
[B]txtF1n.requestFocus(true); // requisita o foco na Fração1 [/B]numerador.
}

public int MDC(int x, int y){
if (x%y==0){
return y;}
else{
return MDC(y, x%y); }
}

public String simplifica(int a, int {
//Simplificação de fração: (a/b)=( (a/mdc(a,) / (b/mdc(a,)
return ((a/MDC(a,)+"/"+(b/MDC(a,));
}


/* Metodo para Multiplicar duas Frações */
public void Multiplicar(){
int F1n,F1d,F2n,F2d;
int result,numerador,denominador;
lblConta.setText("Conta: "+txtF1n.getText()+"/"+txtF1d.getText()+" x "+txtF2n.getText()+"/"+txtF2d.getText());
F1n = Integer.parseInt(txtF1n.getText());
F1d = Integer.parseInt(txtF1d.getText());
F2n = Integer.parseInt(txtF2n.getText());
F2d = Integer.parseInt(txtF2d.getText());
numerador=F1n*F2n;
denominador=F1d*F2d;
lblResposta.setText("Resultado: "+simplifica(numerador,denominador));
}

/* Metodo para Dividr duas Frações */
public void Dividir(){
int F1n,F1d,F2n,F2d;
int result,numerador,denominador;
lblConta.setText("Conta: "+txtF1n.getText()+"/"+txtF1d.getText()+" / "+txtF2n.getText()+"/"+txtF2d.getText());
F1n = Integer.parseInt(txtF1n.getText());
F1d = Integer.parseInt(txtF1d.getText());
F2n = Integer.parseInt(txtF2n.getText());
F2d = Integer.parseInt(txtF2d.getText());
numerador=F1n*F2d;
denominador=F1d*F2n;
lblResposta.setText("Resultado: "+simplifica(numerador,denominador));
}

/* Metodo para Somar duas Frações */
public void Somar(){
int F1n,F1d,F2n,F2d;
int result,numerador,denominador;
lblConta.setText("Conta: "+txtF1n.getText()+"/"+txtF1d.getText()+" + "+txtF2n.getText()+"/"+txtF2d.getText());
F1n = Integer.parseInt(txtF1n.getText());
F1d = Integer.parseInt(txtF1d.getText());
F2n = Integer.parseInt(txtF2n.getText());
F2d = Integer.parseInt(txtF2d.getText());
//Soma de fração: (a/b)+(c/d)=( (a.d+c. / b.d ) simplificada.
numerador=((F1n*F2d+F2n*F1d)) ;
denominador=F1d*F2d;
lblResposta.setText("Resultado: "+simplifica(numerador,denominador));
}

/* Metodo para Subtrair duas Frações */
public void Subtrair(){
int F1n,F1d,F2n,F2d;
int result,numerador,denominador;
lblConta.setText("Conta: "+txtF1n.getText()+"/"+txtF1d.getText()+" - "+txtF2n.getText()+"/"+txtF2d.getText());
F1n = Integer.parseInt(txtF1n.getText());
F1d = Integer.parseInt(txtF1d.getText());
F2n = Integer.parseInt(txtF2n.getText());
F2d = Integer.parseInt(txtF2d.getText());
//Soma de fração: (a/b)+(c/d)=( (a.d+c. / b.d ) simplificada.
numerador=((F1n*F2d-F2n*F1d)) ;
denominador=F1d*F2d;
lblResposta.setText("Resultado: "+simplifica(numerador,denominador));
}

public void exibir(){
//lblResposta.setText(txtF1n.getText()+ "/"+txtF1d.getText()+" "+txtF2n.getText()+ "/"+txtF2d.getText());
}

public void atribuir(){
txtF1n.setText(txtF1n.getText()+"0");
}

//método obrigatório após implementar a interface ActionListener
public void actionPerformed(ActionEvent arg) {
if(arg.getSource() == btnOK){
exibir(); }

if(arg.getSource() == btnSoma){
Somar(); }

if(arg.getSource() == btnMultiplica){
Multiplicar(); }

if(arg.getSource() == btnSubtrai){
Subtrair(); }

if(arg.getSource() == btnDivide){
Dividir(); }

if (arg.getSource() == btnLimpar){
limpar(); }
}

public static void main(String[] args) {
new Calculadora();
}
}

:confused:

Postado

Olá amigo,

na classe Jtextfield deve haver algum método para checar se o campo está com foco. Dê uma olhada na documentação da classe. Neste caso quando o usuário apertar o botão você checa qual dos textfields está com foco no momento.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!