[RESOLVIDO] Usar variável do swing em outra classe

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. :confused:

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!

1 curtida

Vc só quer pegar os dados da outra combo?

Objetos trocam mensagem entre si usando métodos.
Então crie métodos nas suas classes para uma poder “conversar” com a outra.

Quero pegar o valor da JComboBox em uma classe diferente da classe da Janela Swing, mas a variável é privada.

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.

Teste novoteste = new Teste();

1 curtida

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.

1 curtida

Seria algo do tipo

public class SegundaClasse {
    public static void main(String[] args) {
        Janela janela = new Janela();
        String valor;
        valor = janela.getComboBoxEtc.getText();
    }
}
1 curtida

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.

Cria esse método na classe SelfAware:

public int getIndiceSelecionadoNoBoxDia() {
    return boxDia.getSelectedIndex();
}

Aí você pode fazer isso na classe Verifyer:

int indiceSelecionado = selfaware.getIndiceSelecionadoNoBoxDia();
1 curtida

Eu fiz o código seguindo seu exemplo:

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 :anguished:
Valeu pela mão até então staroski!! Já aprendi como fazer, só esse erro tá no caminho.

Não, esse erro diz que você está tentando invocar o método getDia de forma estática.

Você escreveu

int dia = SelfAware.getDia();

E deveria ser:

int dia = seuObjetoDoTipoSelfAware.getDia();
1 curtida

Ooohh pois é meu. Enfim deu certo! Muito obrigado, kudos!