Pessoal,
Como faço para pegar uma variavel em outra classe. Eu consigo pegar mas preciso as que adquiriram valor dentro de um metodo x.
A duvida é como pegar variavel dentro de um metodo em outra classe?
obrigado,
Pessoal,
Como faço para pegar uma variavel em outra classe. Eu consigo pegar mas preciso as que adquiriram valor dentro de um metodo x.
A duvida é como pegar variavel dentro de um metodo em outra classe?
obrigado,
Se eu bem entendi a sua dúvida
public class Teste {
public String getFullName() {
Teste2 t2 = new Teste2();
return t2.getNome() + " de Tal";
}
public static void main(String[] args) {
Teste t = new Teste();
System.out.println( t.getFullName());
}
class Teste2 {
public String getNome() {
return "Fulano";
}
}
}
[quote=Marck]Pessoal,
Como faço para pegar uma variavel em outra classe. Eu consigo pegar mas preciso as que adquiriram valor dentro de um metodo x.
A duvida é como pegar variavel dentro de um metodo em outra classe?
obrigado,[/quote]
Se você transformou uma variável dentro de um método, o estado final deve ser enviado no retorno. Retorne uma classe com os atributos que vc quer compartilhar.
Obrigado pela ajuda.
O que quero fazer é isto:
[code]
public class Exemplo {
public void contemStrings(){
String a = JText.getText();
}
} // fim Exemplo
// segunda classe
public class Exemplo2 {
public void valorString(){
Exemplo ex = new Exemplo();
ex.contemStrings();
//aqui nesta parte, queria pegar o valor que String a tem no metodo contemStrings
}
} // fim[/code]
Obrigado
[code]
class Exemplo {
public String contemStrings() {
String a = JText.getText();
return a;
}
}
class Exemplo2 {
public void valorString() {
Exemplo ex = new Exemplo();
String oQueVoceQueria = ex.contemStrings();
}
}[/code]
Mantu
Obrigado.
Mas ainda não consegui o que queria.
Lembrando que são duas classes distintas e dentro do contemStrings eu tenho mais de uma string.
No Exemplo2 no metodo valorString() não to conseguindo pegar o valor de a que está recebendo de um JTextField. Se eu defino um valor para a
String a = "Algum Valor";
ele passa certo, mas não estou conseguindo pegar na JTextField.
Grato pela ajuda.
Marck
Acho que você precisa entender algumas coisinhas antes:
Uma variável declarada dentro de um método, é o que chamamos de variável local. Local, porque aquela variável só vale, só existe no local(método) onde foi declarada. Isso quer dizer que, por exemplo a sua variável a, só existira durante a execução do método contemStrings. O que você gostaria que fosse possível de se fazer (e não é) seria estabelecer um tipo de “ligação” entre o que tá escrito no seu JTextField JText (Evite nomear variáveis com primeira letra maiúscula) e um provável outro JTextField acessado pela classe Exemplo2. Seria isto?
Desculpa, acho que não fui claro!
Exato! Isso que eu quero. Na primeira classe, eu tenho um metodo que guarda os valores das JTextFields em variavies, então eu preciso usar aqueles valores em outra classe. Não seria isso? Usar este metodo na segunda classe para usar os valores das variáveis?
obrigado
Pois é… Como eu disse, você não conseguirá fazer isso. Veja: Quando o método lá armazenar os String nas variáveis (que são locais), estas “morrerão” quando o método terminar sua execução. Sem contar que não existe em Java (Creio que também em nenhuma outra linguagem do mesmo paradigma) recurso algum que permita “referenciar algo” que foi criado “dentro” de um método…
O seu problema, acho, não algo trivial de se resolver… porque acho que a solução envolve threads. Tente dar uma pesquisada sobre o pattern Observable. Creio que dê pra fazer algo a respeito utilizando esse pattern.
Dica: Aqui no GUJ tem um artigo sobre o tal pattern Observable:
http://www.guj.com.br/java.tutorial.artigo.47.1.guj
[quote=Marck]Desculpa, acho que não fui claro!
Exato! Isso que eu quero. Na primeira classe, eu tenho um metodo que guarda os valores das JTextFields em variavies, então eu preciso usar aqueles valores em outra classe. Não seria isso? Usar este metodo na segunda classe para usar os valores das variáveis?
obrigado[/quote]
O que você pode fazer é passar, os valores dos textfields, como parâmetro para a segunda classe. Dica, mão poupe variáveis, se tiver que usá-las para facilitar a sua vida então o faça!
Certo, obrigado pela dica, vou dar uma olhada.
Só mais uma dúvida:
Por que quando eu faço
String a="Algum valor";
E acesso na segunda classe ele passa a String a com o valor “Algum Valor”?
Qual seria a diferença de fazer
String a = jTextFiled.getText();
e acessar na segunda classe sendo que quando já atribuo algum valor a variavel eu consigo acessa-la em outra classe mesmo dentro de um metodo??
Não seria praticamente a mesma coisa?
Isso que não estou entendendo.
Ahh, lembrando que quando faço da seguna maneira ele não traz nenhum valor.
Obrigado,
Marck
Por favor pessoal, alguém pode me ajudar com a dúvida anterior?
obrigado,
Você deve estar tentando acessar o método com outro objeto instanciado da classe que contém o TextField
Dê uma olhada nesse exemplo:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Teste extends JFrame{
private JTextField texto;
private JButton botao;
private static Teste t;
public Teste() {
super("Teste");
setDefaultCloseOperation(EXIT_ON_CLOSE);
texto = new JTextField();
add(texto);
botao = new JButton("Mostre-me");
botao.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Teste2 t = new Teste2();
t.exibeTexto();
}
});
add(botao, BorderLayout.SOUTH);
pack();
setVisible(true);
}
class Teste2 {
public void exibeTexto() {
JOptionPane.showMessageDialog(null, t.getMsg());
}
}
public String getMsg() {
return texto.getText();
}
public static void main(String[] args) {
t = new Teste();
}
}
É só declarar a vaviavel como :public static int “Variavel”