Ajuda com acesso a atributos[ Resolvido]

2 respostas
pardim7

Boa tarde pessoa, blz?

Então, estou precisando de uma ajudinha, precisar mostra em um JPanel o atributo nome da classe funcionário, mas só estou conseguindo fazer isso se coloco como estático e acesso diretamente a classe, segue parte do código:
public class Funcionario {

	static String nome;
	static String empresa;
	static String CPF;
	double salario;
	
		
	
}
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Label02 extends JFrame{
	private JLabel texto;
	private JLabel texto2;
	
	
	public Label02(){
		
		
		
		super("Usando rótulos em JFrame");
		
		texto = new JLabel("Informações do clientel!");
		texto2 =  new JLabel("Nome do Funcionario: " +Funcionario.nome);
		add(texto);
		add(texto2);
	}
}

Parte da classe de outro JFrame:

private class ButtonHandler implements ActionListener{
		
		public void actionPerformed(ActionEvent event){
			
			JOptionPane.showMessageDialog(Button2.this, String.format("You pressed: %s",
					event.getActionCommand()));
		 Funcionario.nome= JOptionPane.showInputDialog("Por favor, digite seu nome: ");
			String CPF = JOptionPane.showInputDialog("Por favor, digite seu CPF: ");
			 double rsalario = Double.parseDouble(JOptionPane.showInputDialog("Digite o seu salário :"));
			
		
			 Label02 label1 = new Label02();
				
				label1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			label1.setSize(321, 360);
				label1.setVisible(true);

    }
}
public class Testa {

	public static void main(String[] args) {
		
			
		Button2 bt = new Button2();
		bt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		bt.setSize(420, 360);
		bt.setVisible(true);
			
	}
	

}

2 Respostas

TerraSkilll

Você precisa estudar mais OO. Recomendo ao menos dar uma olhada nas apostilas da Caelum e da K19, disponíveis na web.

Usar static, nesse caso, não parece ser o que você precisa. O que você precisa é de método getter, que são um dos conceitos mais básicos que se aprende ao lidar com classes.

public class Funcionario {  
  // nada de static !  
  private String nome;  
  private String empresa;  
  private String CPF;  
  private double salario;

  public String getNome(){
    return this.nome;
  }

  public String getEmpresa(){
    return this.empresa;
  }

  public String getCPF(){
    return this.CPF;
  }

  public double getSalario(){
    return this.salario;
  }
}
E para usar:
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Label02 extends JFrame{
	private JLabel texto;
	private JLabel texto2;
	
	
	public Label02(){
		super("Usando rótulos em JFrame");

		texto = new JLabel("Informações do clientel!");
		texto2 =  new JLabel("Nome do Funcionario: " +Funcionario.getNome()); // usando o método getter
		add(texto);
		add(texto2);
	}
}
Também é possível fazer isso deixando os atributos como public, mas não é uma abordagem recomendada no geral.

Abraço.

pardim7

Ah tá, eu até usei o getter e setter, mas eu estava acessando errado, obrigado pela ajuda!

Criado 14 de outubro de 2014
Ultima resposta 15 de out. de 2014
Respostas 2
Participantes 2