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

12 respostas Resolvido
swingjava
R

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!

12 Respostas

R

Vc só quer pegar os dados da outra combo?

S

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

R

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

R

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?

V

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();

W

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.

F

Seria algo do tipo

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

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.

S
Solucao aceita

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();
R

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.

S

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();
R

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

Criado 1 de março de 2018
Ultima resposta 2 de mar. de 2018
Respostas 12
Participantes 6