Apanhar valores de outras classes

6 respostas
V

Olá! pessoal como eu faço para poder apanhar um valor de um objeto ou variável de uma classe e identificar esse valor em uma outra classe?
Ex: tenho um JCombo que ao selecionado um item devo passar essa informação para uma outra classe.

O que eu tenho que fazer na classe q tem o JCombo para que eu possa saber o q foi selecionado em outra classe?

Obs: Nos exemplos que encontrei na net somente faz esse tratamento na mesma classe.

obrigado :thumbup:

6 Respostas

anderline

Bem eu não sei se entendi direito, mas espero ajudar em alguma coisa.

Cara oque você pode fazer é criar uma variavel de instancia nesta classe que tem o jCombo e no evento que seleciona o item do jCombo vc adiciona esse valor nesta varíavel, depois vc cria um metódo get para passar o valor dessa variável para a outra classe, instanciando um obj da classe q possui o jCombo.

V

Anderline, na passagem do valor é q esta o problema, eu ate consigo passar o valor mas na outra classe ele esta zerado!

Y

Poste o seu código, por favor. (das duas classes envolvidas no processo: a do JComboBox e a que tem de recuperar o valor)

V
Poste o seu código, por favor. (das duas classes envolvidas no processo: a do JComboBox e a que tem de recuperar o valor)
Segue o codigo para analise. :thumbup: Classe tela
package Pacote;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
public class Tela extends JFrame{
    private JLabel lblValor;
    private JTextField tfValor;
    private JButton btCalcula;
    private JButton btSair;
    private JPanel painel;
    private JLabel lblOpera;
    private JComboBox box;
    private JLabel lblNum;
    private JSpinner num;
    private int opcao;
    public Tela() {
        setTitle("Realizar Calculo");
        lblValor = new JLabel("Valor:");
        getContentPane().add(lblValor);
        lblValor.setBounds(30, 120, 50, 20);
        
        JTextField tfValor = new JTextField();
        getContentPane().add(tfValor);
        tfValor.setBounds(110, 120, 80, 20);
        tfValor.setEnabled(false);
               
        lblOpera = new JLabel("Operacao:");
        getContentPane().add(lblOpera);
        lblOpera.setBounds(20, 30, 65, 20);
        
        String operacoes[] = {"Operacao","Soma","Subtracao",
        "Multiplicacao","Divisao"};
        box = new JComboBox(operacoes);
        box.setSelectedIndex(0); 
        box.setMaximumRowCount(5);
        getContentPane().add(box);
        box.setBounds(110, 30,82, 20);
        box.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evento) {
                JComboBox listaAux = (JComboBox)evento.getSource();
                opcao = (int)listaAux.getSelectedIndex();
                getOpcao(int opcao);
             }
        });
        
        lblNum = new JLabel("Numero:");
        getContentPane().add(lblNum);
        lblNum.setBounds(30, 210, 50, 20);// coluna,linha,largura,altura
        
        JSpinner num = new JSpinner();
        num.setModel(new SpinnerNumberModel(0,0,100,1));
        getContentPane().add(num);
        num.setBounds(110, 210, 40, 20);
                        
        JButton btCalcula = new JButton("Calcula");
        btCalcula.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                //acaoCalcular
            }
        });
        btCalcula.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                //acaoCalcular
            }
        });
        getContentPane().add(btCalcula);
        btCalcula.setBounds(80, 300, 80, 20);
        btCalcula.setEnabled(false);
        
        JButton btSair = new JButton("Sair");
        btSair.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                System.exit(0);
            }
        });
        btSair.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                System.exit(0);
            }
        });
        getContentPane().add(btSair);
        btSair.setBounds(300, 300, 80, 20);// coluna,linha,largura,altura
        btSair.setEnabled(false);
        
        Valores painel = new Valores(); 
        painel.setBorder(new javax.swing.border.LineBorder(new Color(0, 0, 0)));
        getContentPane().add(painel);
        painel.setBounds(250, 30, 200, 200);
        
        JDesktopPane tela = new JDesktopPane();
        setContentPane(tela);
        
        tela.add(lblValor);
        tela.add(tfValor);
        tela.add(lblOpera);
        tela.add(box);
        tela.add(lblNum);
        tela.add(num);
        tela.add(painel);
        tela.add(btCalcula);
        tela.add(btSair);
        setSize(500,300);
        setLocationRelativeTo(null);
 	setVisible(true);
        
    }
    
    public int getOpcao() 
   { 
     return opcao; 
   } 
    
  }
Classe Valores
package Pacote;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
public class Valores extends JPanel {
   private JLabel mostra;
   private JLabel mostra1;
   private JLabel mostra2;
   private JTextField tfMostra;
   private JTextField tfMostra1;
   private JTextField tfMostra2;
   private JLabel resultadoFinal;
   private JTextField tfResultado;
    
   public Valores() {
       setLayout(new FlowLayout());
       JLabel mostra = new JLabel ("Valor JComboBox:");
       add(mostra);
              
       JTextField tfMostra = new JTextField(10);
       tfMostra = JTextField.getOpcao();
       add(tfMostra);
              
       JLabel mostra1 = new JLabel ("Valor JTextField:");
       add(mostra1);
              
       JTextField tfMostra1 = new JTextField(10);
       add(tfMostra1);
              
       JLabel mostra2 = new JLabel ("Valor JSpinner:");
       add(mostra2);
              
       JTextField tfMostra2 = new JTextField(10);
       add(tfMostra2);
       
       JLabel resultadoFinal = new JLabel ("Resultado Final:");
       add(resultadoFinal);
              
       JTextField tfResultado = new JTextField(10);
       add(tfResultado);
              
    }

     
}
Classe Main
package Pacote;
import Pacote.Tela;
import javax.swing.*;
public class Main {
 private Tela tela = null;   
    
    public Main() {
        tela = new Tela();
        tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
   public static void main(String[] args) {
     new Main();   
    }
    
}
E

Na classe Tela:

public class Tela extends JFrame{
     private JLabel lblValor;
     private JTextField tfValor;
     private static Tela instance;
     ...

  public Tela() {
         instance = this;
         setTitle("Realizar Calculo");
         .....

  get and set de instance...

Na Valores:

public Valores() {
        setLayout(new FlowLayout());
        Tela tela = Tela.getInstance();
        JLabel mostra = new JLabel ("Valor JComboBox:" + tela.getBox.getSelectedItem().toString(););
        add(mostra);
        ...

Falou

V

Kara não rolou!!

Tenho 3 duvidas:
1- O q eu vou retornar no get/set ? fiz desse jeito e deu erro na linha comentada.

public String getInstance() 
    { 
      return instance; //aki da erro
    } 
     
    public void setInstance(String instance)
    {
        instance = instance;
    }

2 - Quem é getBox? tenho q criar esse cara tb? onde?
Na classe valores essa linha esta com erro informando que o início da expressão é ilegal e que esta sendo esperado um “)”.

3 - Se eu fosse fazer com os restantes dos outros componentes(JTextField e JSpinner) seria a mesma coisa? ou teria que criar um get/set pra todos eles?

Valeu pela força :thumbup:

Criado 20 de janeiro de 2007
Ultima resposta 22 de jan. de 2007
Respostas 6
Participantes 4