Como utilizar o JOptionPane neste caso?

gostaria de fazer isso com o pacote JOptionPane, mas não sei fazer.

criei a classe ContaCorrente

public class ContaCorrente { int conta, agencia; double saldo; String nomeCliente; public int sacar(double valor) { if (this.saldo >= valor) { this.saldo = this.saldo - valor; return 1; } return 0; } public void depositar(double valor) { this.saldo = this.saldo + valor; } public void imprimir() { System.out.println("Número da Conta: " + this.conta); System.out.println("Número da agencia: " + this.agencia); System.out.println("Saldo da conta corrente: " + this.saldo); System.out.println("Nome do cliente: " + this.nomeCliente); } }

depois foi criado a classe PrincipalContaCorrente

import java.util.Scanner; public class PrincipalContaCorrente { ContaCorrente cc = new ContaCorrente(); public static void main(String[] args) { PrincipalContaCorrente obj = new PrincipalContaCorrente(); int op = 0; while (op != 9) { Scanner sc = new Scanner(System.in); System.out.println("1 - Cadastrar"); System.out.println("2 - Saque"); System.out.println("3 - Deposito"); System.out.println("4 - Consultar Saldo"); System.out.println("9 - Sair"); System.out.println("Entre com uma opção: "); op = sc.nextInt(); switch (op) { case 1: obj.execCadastrar(); break; case 2: obj.execSaque(); break; case 3: obj.execDeposito(); break; case 4: obj.execConsulta(); break; } } } public void execDeposito() { Scanner sc = new Scanner(System.in); System.out.println("Entre com o valor para o deposito: "); double valor = sc.nextDouble(); this.cc.depositar(valor); System.out.println("Deposito realizado"); } public void execSaque() { Scanner sc = new Scanner(System.in); System.out.println("Entre com o valor para o saque: "); double valor = sc.nextDouble(); int ret = this.cc.sacar(valor); if (ret == 1) { System.out.println("Saque realizado"); } else { System.out.println("Saque NÂO realizado"); } } public void execConsulta() { this.cc.imprimir(); } public void execCadastrar() { // Para permitir que seja feita a leitura de um nome composto Scanner sc = new Scanner(System.in).useDelimiter("\r\n"); System.out.println("Entre com o nome do cliente: "); this.cc.nomeCliente = sc.nextLine(); System.out.println("Entre com o número da agência: "); this.cc.agencia = sc.nextInt(); System.out.println("Entre com o número da conta: "); this.cc.conta = sc.nextInt(); System.out.println("Entre com o saldo do cliente: "); this.cc.saldo = sc.nextDouble(); } }

Me pediram pra fazer com JOptionPane, mas não sei. Alguem poderia me ajudar por favor?

Você quer substituir todos os System.out.println?

Exibe uma mensagem:

JOptionPane.showMessageDialog(null, "teste");

Coleta uma informação inserida pelo usuário:

String resposta = JOptionPane.showInputDialog("Digite um valor:");

http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JOptionPane.html

1 curtida

A questão é a seguinte:

Desenvolver uma classe Java chamada ContaCorrente com a seguinte estrutura:

ATRIBUTOS: conta, agencia, saldo e nomeCliente.

MÉTODOS:
Método Descrição
sacar() Retorna valor 1 caso o saque seja realizado ou 0 se não houver saldo suficiente na conta. Deverá receber como parâmetro o valor a ser sacado.
depositar() Realizar o depósito do valor recebido como parâmetro. Não deve retornar valor.
imprimir() Exibir na tela os atributos na classe. Esse método não retorna nada.

Desenvolver uma segunda classe Java chamada PrincipalContaCorrente com a seguinte estrutura:

Criar um atributo da classe ContaCorrente para ser usado nos métodos da classe para realizar saques e depósitos. Não se esquecer de executar o operador new para o atributo criado.
Obs.: Atenção, pois ao executar o programa só poderemos fazer um saque se já tivermos realizado um depósito.

MÉTODOS:
Método Descrição
main() Implementá-lo conforme o padrão da linguagem Java. O método main() deverá criar um loop para o usuário escolher entre as opções cadastrar, sacar, depositar ou consultar. Se for selecionada a opção sacar, executar o método execSaque(). Se for selecionado depositar, executar o método execDeposito(). Para a opção consultar, executar o método execConsulta(). Para a opção cadastrar, executar o método execCadastro().

execSaque() Solicitar ao usuário que digite um valor e executar o método sacar() da classe ContaCorrente usando o atributo criado. Testar o retorno do método sacar(). Se for retornado 1, exibir ?Saque realizado?, caso contrário, exibir ?Saque NÃO realizado?.

execDeposito() Solicitar ao usuário que digite um valor e executar o método depositar() da classe ContaCorrente usando o objeto criado anteriormente.

execConsulta() Apresentar os atributos na tela executando o método imprimir() da classe ContaCorrente.

execCadastro() Solicitar que o usuário realize a leitura dos dados via teclado e em seguida realize a atribuição dos valores lidos do teclado aos atributos do objeto da classe ContaCorrente, criado como atributo desta classe.

JOptionPane

Exemplo:

JOptionPane.showMessageDialog(null, "Número da Conta: " + "756\nNúmero da agencia: " + "1\n" );

executa isso no seu código, vê como fica e tente entender como fazer

[quote=lucasportela]Você quer substituir todos os System.out.println?

Exibe uma mensagem:

JOptionPane.showMessageDialog(null, "teste");

Coleta uma informação inserida pelo usuário:

String resposta = JOptionPane.showInputDialog("Digite um valor:");

http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JOptionPane.html[/quote]

Eu sei fazer da forma que esta la em cima com System.out.println.

Estou no começo de programação e perdi a aula que ensinava com JOptionPane.

Preciso entregar isso no formato JOptionPane.

Pelo que entendi, é preciso fazer o menu e exibir os resultados em JOptionPane…
com os exemplos que te dei e o manual da API da oracle, ja dá pra resolver

qual a sua dúvida? acho que não estou entendendo direito

[quote=lucasportela]Pelo que entendi, é preciso fazer o menu e exibir os resultados em JOptionPane…
com os exemplos que te dei e o manual da API da oracle, ja dá pra resolver

qual a sua dúvida? acho que não estou entendendo direito[/quote]

vamos la.

1)vou ter que colocar la em cima “import javax.swing.JOptionPane;” isso eu sei
3)ACHO que não terá o System.out.println
2)ao inves de exibir assim:
1 - Cadastrar
2 - Saque
3 - Deposito
4 - Consultar Saldo
9 - Sair
Entre com uma opção:
1
Entre com o nome do cliente:
eu gostaria que fosse exibido com aquelas caixas de dialogo do JOptionPane
3) eu não sei nada do JOptionPane e gostaria que alguem fizesse nesse formato pra mim ver como faz
4)eu mostrei esse codigo só pra ver como eu queria provavelmente mudara muita coisa
5)executa esse codigo no netbeans e ve se tem como fazer ele no JOptionpane

Este trecho você deve substituir por um JOptionPane.

Scanner sc = new Scanner(System.in);  
                System.out.println("1 - Cadastrar");  
                System.out.println("2 - Saque");  
                System.out.println("3 - Deposito");  
                System.out.println("4 - Consultar Saldo");  
                System.out.println("9 - Sair");  
                System.out.println("Entre com uma opção: ");  

Exemplo:

int opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Cadastrar\n" +
        		                                                             "2 - Saque\n" +
        									     "3 - Deposito\n" +
        									     "4 - Consultar Saldo\n" +
        									     "9 - Sair\nEntre com uma opção: ")); 

mais do que essa explicação eu acabo fazendo o exercicio pra você…

Coloquei o JOptionPane na classe ConcaCorrente

[code]import javax.swing.JOptionPane;
public class ContaCorrente {
int conta, agencia;
double saldo;
String nomeCliente;
public int sacar(double valor) {
if (this.saldo >= valor) {
this.saldo = this.saldo - valor;
return 1;
}
return 0;
}
public void depositar(double valor) {
this.saldo = this.saldo + valor;
}
public void imprimir() {
JOptionPane.showInputDialog("Número da Conta: " + this.conta);
JOptionPane.showInputDialog("Número da agencia: " + this.agencia);
JOptionPane.showInputDialog("Saldo da conta corrente: " + this.saldo);
JOptionPane.showInputDialog("Nome do cliente: " + this.nomeCliente);
}
}

[/code]

fiz certo em colocar o JOptionPane nessa classe?

Na classe principal eu coloquei o JOptionPane e retirei o scanner

[code]import javax.swing.JOptionPane;
public class PrincipalContaCorrente {
ContaCorrente cc = new ContaCorrente();
public static void main(String[] args) {
PrincipalContaCorrente obj = new PrincipalContaCorrente();
int op = 0;
while (op != 9) {
int opcao = Integer.parseInt(JOptionPane.showInputDialog(“1 - Cadastrar\n” +
“2 - Saque\n” +
“3 - Deposito\n” +
“4 - Consultar Saldo\n” +
"9 - Sair\nEntre com uma opção: "));

				switch (op) {
			case 1:
				obj.execCadastrar();
				break;
			case 2:
				obj.execSaque();
				break;
			case 3:
				obj.execDeposito();
				break;
			case 4:
				obj.execConsulta();
				break;
			}
		}
}
public void execDeposito() {
		JOptionPane.showInputDialog
		("Entre com o valor para o deposito: ");
		double valor = sc.nextDouble();
		this.cc.depositar(valor);
		JOptionPane.showInputDialog("Deposito realizado");
	}
public void execSaque() {
	
		JOptionPane.showInputDialog("Entre com o valor para o saque: ");
		double valor = sc.nextDouble();
		int ret = this.cc.sacar(valor);
		if (ret == 1) {
			JOptionPane.showInputDialog("Saque realizado");
		} else {
			JOptionPane.showInputDialog("Saque NÂO realizado");
		}
}
public void execConsulta() {
		this.cc.imprimir();
}
public void execCadastrar() {
		// Para permitir que seja feita a leitura de um nome composto
		
		JOptionPane.showInputDialog("Entre com o nome do cliente: ");
		this.cc.nomeCliente = sc.nextLine();
		JOptionPane.showInputDialog("Entre com o número da agência: ");
		this.cc.agencia = sc.nextInt();
		JOptionPane.showInputDialog("Entre com o número da conta: ");
		this.cc.conta = sc.nextInt();
		JOptionPane.showInputDialog("Entre com o saldo do cliente: ");
		this.cc.saldo = sc.nextDouble();
  	


    }

}
[/code]

mas tive alguns erros que não consegui concertar, eu sei o pq dos erros mas não sei como concertar… o erro é devido isso aki this.cc.conta = sc.nextInt(); isso é do scanner, mas não sei como utilizar isso no JOptionPane.

essa é só uma questão do exercicio, se alguem não conseguir me explicar como fazer (ja que eu não sei nada de JOptionPane) poderia fazer essa que eu usaria como base para fazer as outras.

Na realidade, até onde eu sei, o JOptionPane só guarda strings, por isso que voce precisa usar um integer.parseInt para transformar a string em int.

veja o que o amigo digitou:

int opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Cadastrar\n" + "2 - Saque\n" + "3 - Deposito\n" + "4 - Consultar Saldo\n" + "9 - Sair\nEntre com uma opção: "));

Isso quer dizer que a variavel “opção” será atribuido o que o usuario digitar, como se já fosse um scanner.

Voce pode (e deve, para limpar o codigo) retirar toda referencia a scanner sim.

[quote=Blue]Na realidade, até onde eu sei, o JOptionPane só guarda strings, por isso que voce precisa usar um integer.parseInt para transformar a string em int.

veja o que o amigo digitou:

int opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Cadastrar\n" + "2 - Saque\n" + "3 - Deposito\n" + "4 - Consultar Saldo\n" + "9 - Sair\nEntre com uma opção: "));

Isso quer dizer que a variavel “opção” será atribuido o que o usuario digitar, como se já fosse um scanner.

Voce pode (e deve, para limpar o codigo) retirar toda referencia a scanner sim.[/quote]

eu retiro as referncias ao scanner e coloco as referencias ao JOptionPane? nesse caso como eu utilizo o JOptionPane?

Não há necessidade de colocar referencias ao JOptionPane…

Ao usar a linha de código

int opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Cadastrar\n" + "2 - Saque\n" + "3 - Deposito\n" + "4 - Consultar Saldo\n" + "9 - Sair\nEntre com uma opção: "));

Você já esta “scaneando” o que o usuario digitar e botando na variavel “opcao”, entendeu? não precisa fazer nada aprecido com o Scanner x = new Scanner(System.in) (por exemplo) não…

[quote=Blue]Não há necessidade de colocar referencias ao JOptionPane…

Ao usar a linha de código

int opcao = Integer.parseInt(JOptionPane.showInputDialog("1 - Cadastrar\n" + "2 - Saque\n" + "3 - Deposito\n" + "4 - Consultar Saldo\n" + "9 - Sair\nEntre com uma opção: "));

Você já esta “scaneando” o que o usuario digitar e botando na variavel “opcao”, entendeu? não precisa fazer nada aprecido com o Scanner x = new Scanner(System.in) (por exemplo) não…[/quote]

se vc verificar no codigo ele esta com erro devido a essa referencia ao scanner, mas se eu retiro ela vai continuar com erro, como se concerta esse erro? esse é o problema

Erro na linha 14

switch (op) {

o certo seria

switch (opcao) {

Entenda o código que eu lhe mostrei e adapte ao seu programa, não quero ficar fazendo por você, o importante é que você entenda a idéia. Se reparar bem, ao corrigir isto, irá ter que corrigir em outros pontos, tente entender e resolver

[quote=lucasportela]Erro na linha 14

switch (op) {

o certo seria

switch (opcao) {

Entenda o código que eu lhe mostrei e adapte ao seu programa, não quero ficar fazendo por você, o importante é que você entenda a idéia. Se reparar bem, ao corrigir isto, irá ter que corrigir em outros pontos, tente entender e resolver[/quote]

continua com os mesmos erros nos mesmo lugares devido fazer referencia ao scanner e não ao JOptionPane
linhas 33,40,55,57,59,61 (ja tentei muito, mas o conhecimento sobre JOptionPane é quase zero)

Alem dessa questão eu tenho outras, se vc me mostrasse como fica esse no JOptionPane eu poderia fazer as outras que tem alguma coisa haver com essa dai.

Alguem por favor poderia me ajudar?

se vais trocar por Joptionpane , ja não vais precisar das referencias do Scaner!

o resto é so não esquecer de fazer os Casts tipo:

int a = Integer.parseInt(JOptionPane.ShowInputDialog()); float b = Integer.parseInt(JOptionPane.ShowInputDialog()); String C = JOptionPane.ShowInputDialog()

espero ter ajudado

consegui aki, mas concerteza deve ter uma forma mais facil e menos trabalhosa do que do jeito que fiz, tive que criar 3 classes.

consegui aki, mas concerteza deve ter uma forma mais facil e menos trabalhosa do que do jeito que fiz, tive que criar 3 classes.

desculpe , não sei se entendi mal a duvida , mas não vejo necessidade em importar 3 classes