[RESOLVIDO]Duvida com Jtextfield

3 respostas
opa_roa

Olá Pessoal,
Estou começando a usar o forum agora, e estou com uma duvida com um código:
Código abaixo

public class ImpostoRendaExercicioUmGUI extends JFrame  {
	
	private ImpostoRendaExercicioUm maior;
	
	public ImpostoRendaExercicioUmGUI(){
		inicializaComponemtesTela();
	}//Fim da incialização dos compomentes
	
	private void inicializaComponemtesTela(){
		setLayout(new FlowLayout());
		setTitle("Lista Um - Exercicio Um (Imposto de Renda)");
		setSize(200,200);
		setResizable(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		JLabel JLabelNome = new JLabel("Nome: ");
		add(JLabelNome);
		final JTextField JTextFieldNome = new JTextField(10);
		add(JTextFieldNome);
		JLabel JLabelCPF = new JLabel("CPF: ");
		add(JLabelCPF);
		final JTextField JTextFieldCPF = new JTextField(11);
		add(JTextFieldCPF);
		JLabel JLabelUF = new JLabel("UF: ");
		add(JLabelUF);
		final JTextField JTextFieldUF = new JTextField(10);
		add(JTextFieldUF);
		JLabel JLabelRenda = new JLabel("Renda: ");
		add(JLabelRenda);
		final JTextField JTextFieldRenda = new JTextField(10);
		add(JTextFieldRenda);
		JButton JButtonCalcular = new JButton("Calcular");
		add(JButtonCalcular);
		JButtonCalcular.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent evtCalcular) {
				ImpostoRendaExercicioUm pessoaContribuinte = new ImpostoRendaExercicioUm();
				pessoaContribuinte.setNome(JTextFieldNome.getText());
				pessoaContribuinte.setCpf(JTextFieldCPF.getText());
				pessoaContribuinte.setUf(JTextFieldUF.getText());
				pessoaContribuinte.setRendaAnual(Float.parseFloat(JTextFieldRenda.getText()));	
				
				JOptionPane.showMessageDialog(null, "Total de Imposto a pagar é: "+ pessoaContribuinte.getValorImposto());	
				
				if (maior == null || pessoaContribuinte.getValorImposto() > maior.getValorImposto()){
					maior = pessoaContribuinte;
				}
			}
		});	
		
		JButton JButtonMaiorContribuinte = new JButton("Maior Contribuinte");
		add(JButtonMaiorContribuinte); 
		JButtonMaiorContribuinte.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent evtMaior) {
		        String str = "Maior contribuinte\nNome:"+maior.getNome()+
                "\nCPF:"+maior.getCpf()+
                "\nUF:"+maior.getUf()+
                "\nRenda anual: R$"+maior.getRendaAnual()+
                "\nImposto a Pagar: R$"+maior.getValorImposto();
		        JOptionPane.showMessageDialog(null, str);	
				
			}
		});
	}// Fim Metodo para inicializaçoão dos componentes

	public static void main(String[] args) {
		ImpostoRendaExercicioUmGUI ImpostoRendaExercicioUmGUI = new ImpostoRendaExercicioUmGUI();
		ImpostoRendaExercicioUmGUI.setVisible(true);
	}// Fim do metodo main
	
}// fim da classe ImpostoRendaExercicioUmGUI

Nas linhas 18, 22, 26, 30, eu tive que colocar a palavra reservada final, porem não entendi o motivo de eu precisar colocar ela lá, coloquei pois o eclipse me instruiu a colocar a mesma lá para que não ocorram erros de programação.

Alguem poderia me explicar por que da utilidade de haver o final lá.

3 Respostas

kenneth

Fala brow,

A palavra final determina uma constante, ou seja, algo que nao tera
seu valor modificado posteriormente.
No caso de classes, ela impede que outras classes herdem dela.

Agora, quanto a ser necessario colocar essa palavra no seu codigo, se
voce tirar, qual o erro que o Eclipse acusa?

Abraco!

opa_roa

Na linha 38, onde eu crio o obejto nome e faço o SetNome, eclipse retorna o seguinte “Cannot refer to a non-final variable JTextFieldNome inside an inner class defined in a different method”

Não entendi por que dele estar me retornando isso. :?

opa_roa

Descobri por que ocorre, o evento da ActionListner, é uma Inner Class, ou seja n tem acesso aos dados de fora.
Obrigado.

Criado 21 de fevereiro de 2011
Ultima resposta 23 de fev. de 2011
Respostas 3
Participantes 2