Salve galera!
Eu tenho um projeto onde eu uso o Swing, e eu criei uma segunda classe além da classe da janela Swing.
O que eu preciso é acessar as variáveis da janela Swing nessa segunda classe, mas não está dando certo de jeito nenhum.
Na classe da Janela eu tenho o campo de declaração de variáveis que é preenchido automaticamente conforme são criadas variáveis na janela (uso NetBeans). Exemplo:
private javax.swing.JComboBox boxDia;
Na classe da Janela eu uso a variável boxDia normalmente, mas na segunda classe não consigo usá-la.
Se eu tento usá-la na segunda classe recebo o erro:
cannot find symbol
symbol: variable boxDia
Pesquisei bastante e tentei algumas coisas, li sobre escopo, mas nesse caso tá foda entender como fazer!
Alguma dica pro iniciante?
Valeu!
Valeu staroski, e como eu faria isso? Qual tipo de método?
Acho que tenho que criar um método na classe principal que torne a variável que é privada por padrão em uma variável pública, certo?
A sua variável é privada, mas a classe não.
Você não precisa alterar sua variável para pública, pois quem lhe fornecerá o valor será o método que você criar.
Digamos que sua classe chama Teste, para você ter acesso a esta classe dentro de uma outra classe basta você chamar esta classe da seguinte forma.
Bom dia, amigo.
Para fazer o que o amigo @staroski recomendou, vá na classe que tem as informações desejadas e crie uma função exclusiva para retornar estes valores e deixe esta função como public.
O porque de utilizar um método exclusivo para retornar estes valores, assim você mantêm as informações em PRIVATE e só retorna os valores sem modificações.
public class SegundaClasse {
public static void main(String[] args) {
Janela janela = new Janela();
String valor;
valor = janela.getComboBoxEtc.getText();
}
}
Minha classe principal se chama SelfAware, onde as variáveis privadas estão (boxDia), e minha classe secundária se chama Verifyer, onde eu quero usar as variáveis privadas que estão em SelfAware. Então seguindo seu exemplo o código ficaria:
public class Verifyer {
public static void main(String[] args) {
SelfAware selfaware = new SelfAware();
int boxDia = selfaware.boxDia.getSelectedIndex();
}
}
Porém ainda não dá certo. Aparece o erro: "boxDia has private access in SelfAware"
Certeza que tô perdendo algo simples.
public class SelfAware extends javax.swing.JFrame {
public int getDia() {
return (boxDia.getSelectedIndex()+1);
}
E na classe Verifyer:
public void Verifyer(String[] args) {
int dia = SelfAware.getDia();
}
Mas recebo o erro ao chamar o método: "non-static method getDia() cannot be referenced from a static context"
Esso erro diz que a classe Verifyer é estática, mas como pode ver ela não é… estranho
Valeu pela mão até então staroski!! Já aprendi como fazer, só esse erro tá no caminho.