galera por q não consigo criar um objeto da classe Main, para instanciar os getres e settes
dos componentes da tela?
// classe Main...importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JTextField;importjavax.swing.SwingConstants;publicclassMainextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;JButtonbtn=newJButton("Confirmar!");JLabellbl=newJLabel();JTextFieldtxt=newJTextField();publicvoidjanela(){componentes();setTitle("Banco");setSize(350,500);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);setVisible(true);}publicvoidcomponentes(){// BotãosetLayout(null);btn.setBounds(120,350,100,60);btn.setFocusable(false);// retira o contorno do texto!btn.addActionListener(this);getContentPane().add(btn);
//// classe Banco
importjava.util.Scanner;publicclassBanco{floatbanc=0.0f;floatdep=0.0f;Scannerler=newScanner(System.in);Stringresp;booleanrepetir=true;Stringnome;Mainpr=newMain();publicvoidaçao(){// Nao mostra os gettes do botao, texto etc..pr.System.out.println("Hola, como posso te chamar?");ler=newScanner(System.in);nome=ler.nextLine();System.out.println("Hola "+nome+", seja bem vindo(a)!");System.out.println("Você posue no Banco o Valor de "+banc+" Reis!");System.out.println("Deseja fazer algum deposito?");resp=ler.nextLine();
De qualquer forma, é estranho vc querer acessar propriedades da tela (botão, textfield, etc) de dentro da classe Banco.
Pantrol
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JTextField;importjavax.swing.SwingConstants;publicclassMainextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;JButtonbtn=newJButton("Confirmar!");JLabellbl=newJLabel();JTextFieldtxt=newJTextField();publicvoidjanela(){componentes();setTitle("Banco");setSize(350,500);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setLocationRelativeTo(null);setVisible(true);}publicvoidcomponentes(){// BotãosetLayout(null);btn.setBounds(120,350,100,60);btn.setFocusable(false);// retira o contorno do texto!btn.addActionListener(this);getContentPane().add(btn);// textosetLayout(null);lbl.setBounds(10,80,300,30);lbl.setText("ok. bem vindo");lbl.setHorizontalAlignment(SwingConstants.CENTER);// centraliza o textogetContentPane().add(lbl);// Entradade dadossetLayout(null);txt.setBounds(120,270,100,30);txt.setHorizontalAlignment(SwingConstants.CENTER);// centraliza o textotxt.setFocusable(true);// retira o contorno do texto!getContentPane().add(txt);}publicstaticvoidmain(String[]args){Mainm=newMain();m.janela();}@OverridepublicvoidactionPerformed(ActionEvente){// JOptionPane.showMessageDialog(null, "Informaçao Incorreta!", "ERRO!", JOptionPane.ERROR_MESSAGE);}publicJButtongetBtn(){returnbtn;}publicvoidsetBtn(JButtonbtn){this.btn=btn;}publicJLabelgetLbl(){returnlbl;}publicvoidsetLbl(JLabellbl){this.lbl=lbl;}publicJTextFieldgetTxt(){returntxt;}publicvoidsetTxt(JTextFieldtxt){this.txt=txt;}
}
import java.util.Scanner;
public class Banco {
floatbanc=0.0f;floatdep=0.0f;Scannerler=newScanner(System.in);Stringresp;booleanrepetir=true;Stringnome;Mainpr=newMain();publicvoidaçao(){// Nao mostra os gettes do botao, texto etc..pr.System.out.println("Hola, como posso te chamar?");ler=newScanner(System.in);nome=ler.nextLine();System.out.println("Hola "+nome+", seja bem vindo(a)!");System.out.println("Você posue no Banco o Valor de "+banc+" Reis!");System.out.println("Deseja fazer algum deposito?");resp=ler.nextLine();do{if(resp.equals("sim")){deposito();System.out.println("Ainda deseja depositar algum valor?");ler=newScanner(System.in);resp=ler.nextLine();}elseif(resp.equals("nao")){System.out.println("OK, então ate a proxima "+nome+"!");repetir=false;}else{System.out.println("Resposta errada!");System.out.println("Responda sim ou não!");System.out.println("Ainda deseja depositar no banco?");ler=newScanner(System.in);resp=ler.nextLine();}}while(repetir==true);}publicvoiddeposito(){System.out.println("Qual valor?");dep=ler.nextFloat();banc+=dep;System.out.println("Você agora posue no Banco\n o Valor de "+banc+" Reis!");}
}
Pantrol
e q meu código ta todo la na classe Banco. vc acha melhor de outra forma?
Solucao aceita
Lucas_Camara
Cara, estranho, do jeito que está o código, é para enxergar os métodos getters msm. Até copiei seu código aqui e consegui de boas.
Sobre a forma, recomendo tu dá uma lida sobre o padrão MVC.
M (model): Camada que irá manter o modelo negocial no seu sistema
V (view): Camada que o usuário irá usar para interagir com seu sistema (ex.: as telas)
C (controller): Camada que irá manter a comunicação entre a view (V) e o model (M). No seu exemplo, essa camada iria servir para pegar os dados dos elementos da tela (JButton, JTextfield, etc) e transformar num objeto de negócio (ex.: Banco, Deposito, etc.), e invocar alguma classe do model para executar alguma lógica (ex.: EfetuarDepositoService)
Pantrol
a obrigadão pela ajuda meus cursos não são presenciais e apesar do conteúdo bom e muito cheio de buracos, então eu fiquei fraco em arrumar os elementos esse modo mesmo MVC nem sabia q tinha. além do mais vou ter q mudar muita coisa aqui nesse código por q inicialmente fiz so para saída no console mas agora q criei uma frame tenho que mudar muita coisa.
Lucas_Camara
Usar um padrão tipo o MVC facilita até para fazer esse tipo de mudança (de console para algo visual, por exemplo). Sem falar que eh algo bastante usado (assim como outros padrões de desenvolvimento que há).