Dúvida Exercício

Alguém pode me dar uma ajuda quanto a esse código, tô fazendo coisa errada mas ñ estou sabendo como arrumar :oops: Para preencher os atributos da classe, é onde estou errando :cry:

[code]package pacBancoJ;
import javax.swing.io*;
public class Funcionario {
private String nome;
private String depto;
private String dataEntrada;
private String rg;
private double salario;
private boolean trabOuNao;

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

public String getDepto(){
	return depto;
}
public void setDepto(String depto){
	this.depto = depto;
}

public String getDataEntrada(){
	return dataEntrada;	
}
public void setDataEntrada(String dataEntrada){
	this.dataEntrada = dataEntrada;
}

public double getSalario(){
	return salario;
}
public void setSalario(double salario){
	this.salario = salario;
}

public boolean getTrabOuNao(){
	return trabOuNao;
}
public void setTrabOuNao(boolean trabOuNao){
	this.trabOuNao = trabOuNao
}

public static void main (String [] args){
	String cx1;
	
	Funcionario func1 = new Funcionario();
	nome = JOptionPane.showInputDialog ("Entre com o nome do funcionário");
	depto = JOptionPane.shwoInputDialog ("Departamento em que trabalha");
	dataEntrada = JOptionPane.showInputDialog ("Data de admissão");
	rg = JOptionPane.showInputDialog ("RG(Registro Geral)");
	cx1 = JOptionPane.showInputDialog ("Salario atual");
	salario = Double.parseDouble (cx1);
	
	JOptionPane.showMessageDialog ("Nome: " + nome + "\n" + "Departamento: " + depto + 
	"\n" + "Data de admissão: " + dataAdmissao + "\n" + "RG: " + "\n" + "Salario: " 
	+ salario, "DADOS DO FUNCIONÁRIO", JOptionPane.INFORMATION_MESSAGE);
	System.exit (0);
}

}[/code]

Olá Paloma!
Embora vc naum tenha nos dado uma dica de que erro está dando, presumo que seja algo relacionado com vc estar tentando acionar diretamente, por exemplo, o campo nome.
Perceba que no método main, vc está tentando atribuir o valor que o usuário digitar diretamente no campo nome da sua classe.
Porque vc não consegue fazer isso? Por que o método main é um método static, e por isso, só consegue se referenciar a outros métodos ou campos que sejam também static, o que não é o caso do campo nome (nem de nenhum outro campo.
Sugiro que vc faça o seguinte:

 public class Funcionario {
 	...
 	public static void main (String [] args){
 		String cx1;
 		
 		Funcionario func1 = new Funcionario();
 		func1.setNome(JOptionPane.showInputDialog ("Entre com o nome do funcionário"));
 		...
 		func1.setSalario(Double.parseDouble (cx1));
 		...
 		System.exit (0);
 	}
 }

E por aí vai!
qq dúvida, poste mais, ok!

Poxa valeu era isso mesmo, vou refazer e qualquer dúvida eu posto aqui :smiley:

Obrigada pela ajuda :smiley:

coloque o problema mais detalhadinho!

No código acima no main estou exibindo os dados, mas caso eu crie um outro objeto como func2, pra ñ ter q fazer de novo seria melhor que eu criasse um método só pra exibir e o chamasse, como func1.exibir(); e func2.exibir(), isso seria coerente?

Seria a última palavra em coerência!!! :thumbup:
Tanto é, que o propósito do método toString() é justamente esse, retornar uma String com uma descrição que possa ser utilizada e compreendida pelo usuário. Claro que para isso você tem que sobrescrevelo de forma apropriada. Alternativamente, vc poderia sim fazer o tal do método exibir()! Seu main iria ficar muito mais limpo!!!
Faça isso sim! Depois mostra para nós como ficou, ok!

Ok, vou tentar fazer aqui e depois eu posto, valeu :wink:

Será que dessa forma está corrteo?

[code]public void exibir(){
JOptionPane.showMessageDialog ("Nome: " + nome + “\n” + "Departamento: " + depto +
“\n” + "Data de admissão: " + dataAdmissao + “\n” + "RG: " + “\n” + "Salario: " + salario,
“DADOS DO FUNCIONÁRIO”, JOptionPane.INFORMATION_MESSAGE);
}

public static void main (String [] args){
	String cx1;
	
	Funcionario func1 = new Funcionario();
	func1.setNome (JOptionPane.showInputDialog ("Entre com o nome do funcionário"));
	func1.setDepto (JOptionPane.shwoInputDialog ("Departamento em que trabalha"));
	func1.setDataEntrada (JOptionPane.showInputDialog ("Data de admissão"));
	func1.setRg (JOptionPane.showInputDialog ("RG(Registro Geral)"));
	cx1 = JOptionPane.showInputDialog ("Salario atual");
	func1.setSalario (Double.parseDouble (cx1));
	
	func1.exibir();
	
	System.exit (0);
}

}[/code]

Agora no caso de exibir o correto seria fazer func1.getNome()…
Mas e se eu criar outro objeto como seria, pq quero chamar esse método para imprimir todos os objetos que criar :roll:

[quote=paloma]Será que dessa forma está corrteo?

public void exibir()...

[/quote]
Está sim!
.

Não. Mesmo porque a variável func1 não está no escopo do (não é visível pelo) método exibir(). E além do mais, uma classe não precisa acessar seus próprio campos através de métodos get, afinal, os campos são dela e ela usa eles o quanto e como bem entender… :thumbup:
Do jeito que vc fez, tá certinho!
.

… da mesma classe(Eu suponho) …

[quote=paloma]
…como seria, pq quero chamar esse método para imprimir todos os objetos que criar :roll: [/quote]
Do mesmíssimo jeito que vc fez no main! O seu método exibir é público. Logo, qualquer objeto da sua classe Funcionario, em qualquer lugar, vai sempre poder invocar o exibir().
Qq dúvida, poste mais,ok!

Então eu posso fazer assim:

func1.exibir(); func2.exibir(); func3.exibir();

Sem precisar do get certo!

Entendi correto? :roll:

isso mesmo… aliás, um outro jeito também que pode ser interessante, seria pegar toda aquela string que você formou e colocar ela vindo do método toString(), aí vc também poderia fazer assim:

System.out.println(func1);

e iria sair naquele formato lá… pode ser uma boa

[edit] ah claro, também aí poderia mudar seu exibir para:

JOptionPane.showMessageDialog (toString(), "DADOS DO FUNCIONÁRIO", JOptionPane.INFORMATION_MESSAGE); }

Isso mesmo!
Por exemplo, veja esta classe que usa a sua classe funcionário:

import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JOptionPane;

public class TesteFuncionario {

	public static void main(String[] args) {
		boolean more = true;
		ArrayList funcis = new ArrayList();
		while(more) {
			JOptionPane ask = new JOptionPane("", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
			Funcionario funci = new Funcionario();
			funci.setNome(ask.showInputDialog(null, "Informe o nome do funcionário"));
			funci.setDepto(ask.showInputDialog(null, "Informe o departamento"));
			funci.setDataEntrada(ask.showInputDialog(null, "Informe a data de entrada"));
			funci.setRg(ask.showInputDialog(null, "Informe o RG"));
			funci.setSalario(Double.parseDouble(ask.showInputDialog(null, "Informe o salário atual")));
			funcis.add(funci);
			more = ask.showConfirmDialog(null, "Mais funcionários?") == JOptionPane.YES_OPTION;
		}
		
		for (Iterator iter = funcis.iterator(); iter.hasNext(); ) {
			Funcionario funci = (Funcionario) iter.next();
			funci.exibir();
		}
	}

}

Aqui é outra classa, em outro arquivo que coleciona uma penca de funcionários, e invoca o exibir() de cada um deles!
Qq dúvida, poste mais!

Muito boa a dica do dudaskank!!!
.
Dudaskank, vc conseguiu ver as imagens daquele post que vc amaldiçoou o proxy? :lol:

No caso vc fala de fazer assim:

public void toString(){......

Daí o q eu coloquei no método exibir eu coloco no toString?

O que vc colocou na parte da mensagem do JOptionPane, do método exibir, vc coloca no toString(). Isso mesmo!