Problemas com JOptionPane

14 respostas
henry.everton

Bom dia salvadores dos novatos em java, po estou com uma dúvda neste código aqui.

É certo fazer desta forma? é que está dando erro e não consegui identificar, não sei se é a sintaxe que está errada.

public double Bonifica(){ boolean rec = JOptionPane.showConfirmDialog(null,"Deseja alterar o salário do funcionário "+this.nome+"?","Alteração de Salário",YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if (rec == true){ this.salario = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor para alteração do salário","Salário",JOptionPane.QUESTION_MESSAGE)); } }

valeu

14 Respostas

Marck

Qual o erro que tá dando?

Visualmente está faltando o return.

Como vc está fazendo:

public double Bonifica(){

//seu codigo
//vc tem que retornar algo, neste caso, um double

return var_double;

}

[edit]
sempre que vc usa um metodo sem o void, vc está dizendo que quer retornar algo do tipo declarado, q neste caso é um double.
[/edit]

T

cara onde vc pos esse boolean aí não tem logica, pq o método retorn int

T

Returns:
an integer indicating the option selected by the user

henry.everton

bom vou colocar inteiro aqui o código

esta grande porque tem os gets e sets da classe

import javax.swing.*;
import java.io.*;

public class Funcionario{

	/*#########################################################################################
	#                                                                                         #
	#       Variáveis                                                                         #
	#                                                                                         #
	#########################################################################################*/

	private String nome="";
	private String depto="";
	private double salario=0;
	private String admissao="";
	private String RG="";
	private boolean status;

	/*#########################################################################################
	#                                                                                         #
	#       Metodos set                                                                       #
	#                                                                                         #
	#########################################################################################*/

	public void setNome(String nome){
		this.nome = nome;
	}
	public void setDepto(String depto){
		this.depto = depto;
	}
	public void setSalario(double salario){
		this.salario = salario;
	}
	public void setAdmissao(String admissao){
		this.admissao = admissao;
	}
	public void setStatus(boolean status){
		this.status = status;
	}
	
	/*#########################################################################################
	#                                                                                         #
	#       Metodos get                                                                       #
	#                                                                                         #
	#########################################################################################*/
	
	public String getNome(){
		return(this.nome);
	}
	public String getDepto(){
		return(this.depto);
	}
	public double getSalario(){
		return(this.salario);
	}
	public String getAdmissao(){
		return(this.admissao);
	}
	public boolean getStatus(){
		return(this.status);
	}
	
	/*#########################################################################################
	#                                                                                         #
	#       Metodos                                                                           #
	#                                                                                         #
	#########################################################################################*/
	
	public double Bonifica(){
		boolean rec = JOptionPane.showConfirmDialog(null,"Deseja alterar o salário do funcionário "+this.nome+"?","Alteração de Salário",YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
		if (rec == true){
		this.salario = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor para alteração do salário","Salário",JOptionPane.QUESTION_MESSAGE));
		}
	}
	
	public void Demite(){
		boolean rec = JOptionPane.showConfirmDialog(null,"Deseja alterar o status do funcionáio "+this.nome+"?","Alteração de Status",YES_NO_OPTION,JOptionPane.QUETION_MESSAGE);
		if(rec == true){
			this.status = true;
			}
		else{
			this.status = false;
		}
	}
	
	public void ImprimiInfo(){
		JOptionPane.showMessageDialog(null,"Abaixo segue as informações do funcionário\n\n"+this.nome+"\n"+this.depto+"\n"+this.salario+"\n"+this.admissao+"\n"+this.status,"Imprimindo Dados",JOptionPane.INFORMATION_MESSAGE);
	}
}
henry.everton

entao em vez de boolean eu devo usar int?

desculpem é que eu nunca usei o confirm do swing

T

nao sei se eh soh esse o erro

mas esse eh um dos com certeza

T

posta o erro

henry.everton

olha o erro

Funcionario.java:70: cannot find symbol
symbol : variable YES_NO_OPTION
location: class Funcionario
boolean rec = Integer.parseInt (JOptionPane.showConfirmDialog(nu
ll,“Deseja alterar o salßrio do funcionßrio “+this.nome+”?”,“AlteraþÒo de Salßri
o”,YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)
);

^
Funcionario.java:77: cannot find symbol
symbol : variable YES_NO_OPTION
location: class Funcionario
boolean rec = JOptionPane.showConfirmDialog(null,“Deseja alterar
o status do funcionßio “+this.nome+”?”,“AlteraþÒo de Status”,YES_NO_OPTION,JOpt
ionPane.QUETION_MESSAGE)
;

^

Funcionario.java:77: cannot find symbol
symbol : variable QUETION_MESSAGE
location: class javax.swing.JOptionPane
boolean rec = JOptionPane.showConfirmDialog(null,“Deseja alterar
o status do funcionßio “+this.nome+”?”,“AlteraþÒo de Status”,YES_NO_OPTION,JOpt
ionPane.QUETION_MESSAGE)
;

^

3 errors

luistiagos

expremente colocar JOptionPane.YES_NO_OPTION invez de so o
YES_NO_OPTION

T

faz seu método assim que vai funcionar:

public double Bonifica(){

int rec = JOptionPane.showConfirmDialog(null,"Deseja alterar o salário do    funcionário ", Alteração de Salário, 1 ,JOptionPane.QUESTION_MESSAGE);

if (rec == 0){

this.salario = Double.parseDouble(JOptionPane.showInputDialog(null,Digite o valor para alteração do salário,Salário,JOptionPane.QUESTION_MESSAGE));

}

return salario;

}
Marck

...tem uma alteração no JOptionPane:

public double Bonifica(){
 		
 		int i = JOptionPane.showConfirmDialog(null,"Deseja alterar o salário do funcionário "+this.nome+"?","Alteração de Salário",JOptionPane.YES_NO_OPTION);
 		if (i == 0){
 		this.salario = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor para alteração do salário","Salário",JOptionPane.YES_NO_OPTION));
 		
 		
 		}
 		return 1.0;//não sei o que vc quer retornar
 	}

O int, se for 0, é true.

Se quiser mudar o que aparece nos botões é só criar um Object:

Object obj = {"Sim","Não"};
henry.everton

Em qual lugar da minha estrutura eu coloco esta linha?

Object obj = {"Sim","Não"};
herbertpimentel

nossssssaaaaaa que confusão que o pessoal ta fazendo aí :smiley:

bem jah vi que o problema foi resolvido, contudo acho que fica mais claro o código quando se usa as CONSTANTES pra nomear as coisas assim ao invés de usar 0 o que não é muito claro vc pode usar aconstante JOptionPane.YES_OPTION tal como segue:

int yesno = JOptionPane.showConfirmDialog(null, "show ?", "", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        
        if (yesno == JOptionPane.YES_OPTION) 
            JOptionPane.showMessageDialog(null, new String(jPasswordField1.getPassword()));
  • essa é uma boa pratica e em certos pontos ajuda muito a melhorar a legibilidade do codigo

espero ter ajudado…

henry.everton

ai sim… tantas respostas ja tava confuso… mas legal valeu pessoal…

apesar de estar com outro problema agora de impressao;…srsrs… agora este esta resolvido

valeu

Criado 29 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 14
Participantes 5