acredito que esse assunto tenha no forum, mas como ainda nao ficou claro estou postando um exemplo para esclarecimento
seguinte… tenho a classe Tela onde é o visual para o cliente
[code]import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.*;
public class Tela extends JFrame {
private static final long serialVersionUID = 1L;
public JButton bok;
public JTextField nome;
public Tela(){
Container tela = getContentPane();
FlowLayout lay = new FlowLayout(FlowLayout.CENTER);
tela.setLayout(lay);
bok = new JButton("OK");
TratarEventos trat = new TratarEventos();
bok.addActionListener(trat);
nome = new JTextField(10);
tela.add(nome);
tela.add(bok);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]){
Tela app = new Tela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}[/code]
na sequencia tenho uma classe TratarEvento onde trato os metodos.
public class TratarEventos implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getActionCommand() == “OK”){
JOptionPane.showMessageDialog(null, “Evento reconhecido”);
//Ao invés de mostrar a mensagem acima
//AQUI quero mostrar o texto do JTextField name que foi criado na classe Tela
}
}
}[/code]
Como posso passar o conteudo da classe visual (Tela) para a classe de eventos?
Da forma que vc esta fazendo, poderia ser assim na classe Tela:
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.*;
public class Tela extends JFrame {
private static final long serialVersionUID = 1L;
public JButton bok;
public JTextField nome;
public Tela(){
Container tela = getContentPane();
FlowLayout lay = new FlowLayout(FlowLayout.CENTER);
tela.setLayout(lay);
bok = new JButton("OK");
TratarEventos trat = new TratarEventos(bok); // passar como parametro o JButton a testar
bok.addActionListener(trat);
nome = new JTextField(10);
tela.add(nome);
tela.add(bok);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]){
Tela app = new Tela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
E assim na classe TratarEventos:
import java.awt.event.*;
import javax.swing.JOptionPane;
import javax.swing.JButton;
public class TratarEventos implements ActionListener{
private JButton btnEvento = new JButton();
public TratarEventos(JButton btn){ // Criar um construtor com um argumento
this.btnEvento = btn;
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == btnEvento){ // modificar o teste de eventos
JOptionPane.showMessageDialog(null, "Evento reconhecido");
//Ao invés de mostrar a mensagem acima
//AQUI quero mostrar o texto do JTextField name que foi criado na classe Tela
}
}
}
O que vc quer passar, o conteudo do JTextField? é só vc instanciar a classe e chamar um metodo passando como parametro o JTextField (jTextField1.getText() - String);
Fala ai! valeu pela dica mas o que realmente estou questionando é como ler o conteudo do JtextFiel nome.
A ideia é usar o conseito MVC e pelo que estou visualizando no meu projeto eu tenho apenas M (tratamento dos metodos) e V (classe visual), ou seja como posso implementar controle entre as duas classes?
o objetivo desse exemplo é como posso exibir o conteudo de Jtextfiel sendo que o tratamento de evento esta em outra classe.
Vc esta confundindo MVC, estude o conceito novamente, M é Model (Grossamente falando a comunicação com o banco), e nada a ver com classe métodos, essa sua classe de metodos ai ta mais parecendo um Controller.
Não conheço muito de JSE, sei mais JEE, mais acredito que não dará para vc reaproveitar estas actions, bem o modelo MVC JEE e MVC JSE, é um pouco diferente pelo o que sei, então, deixe as interfaces gráficas e actions na VIEW, os metodos de tratamentos que possam ser aproveitados em outras plataformas no CONTROLLER, e a parte do banco no MODEL, se alguem tiver uma outra ídeia posta ai.