jTextArea - jComboBox e jList - Como usar? [RESOLVIDO]

1. jTextArea - jComboBox e jList - Como usar? [RESOLVIDO]

Gabriel
fariab

(usa Manjaro Linux)

Enviado em 07/09/2017 - 09:07h

Olá pessoal,

Estou começando a me aventurar na POO e recebi uma lista de exercícios.
Um um deles, foi pedido para que eu tenha que usar o jTextArea,jComboBox e jList.

E tenho uma dúvida enorme com esses três elementos.

1- Como eu faço para saber qual opção do jComboBox o usuário escolheu?
2- Qual opção do jList o usuário escolheu?
2- Como faço quebra de linha no jTextArea?

Preciso saber também, como vou juntar esses três com um if:

Exemplo:

if (jComboBox == 2 && jList == 8){

// Três linhas de texto dentro do jTextArea

}


Obrigado,


PS: Não quero a lógica do programa, me problema é com a sintaxe.


  


2. Re: jTextArea - jComboBox e jList - Como usar?

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 07/09/2017 - 13:02h

Olá.

Para retornar o valor de uma JComboBox, você usa o método getSelectedItem. Por exemplo, vamos supor que eu crie uma JComboBox com duas opções String:

String[] opcoes = {"Opção 1","Opção 2"};
JComboBox cb = new cb<String>(opcoes);


Para retornar o valor selecionado:

String opcaoSelecionada = String.valueOf(cb.getSelectedItem()); 


No caso da JList, você pode retornar somente o primeiro valor selecionado usando um método semelhante (getSelectedValue)...

String selecao = jList.getSelectedValue(); 


... ou pode retornar uma lista de todos os itens selecionados. Vamos supor que essa lista tenha valores String e você quer retornar todas as opções selecionadas. Você pode fazer isso com o método getSelectedValuesList:

List<String> selecao = jList.getSelectedValuesList(); 


Feito isso, você pode varrer a lista e trabalhar com os valores selecionados (no seu caso, adicioná-los à jTextArea). Lembre-se de verificar o tipo de dados que está trabalhando (neste exemplo usei String).

Quando em dúvida sobre a API Java, é sempre bom verificar o javadoc da versão que estiver usando. Por exemplo, se estiver usando Java 8:

http://docs.oracle.com/javase/8/docs/api/

Atenção: O Java Swing está em estágio de depreciação, a Oracle já anunciou que ele está sendo substituído pelo JavaFX, que apresenta uma estrutura mais consistente e completa. Conhecimento em Java Swing ainda será necessário por um tempo, por questões de manutenção e migração, porém não é recomendável criar aplicações novas em Swing.

---

Atenciosamente,
Hugo Cerqueira


3. Re: jTextArea - jComboBox e jList - Como usar?

Gabriel
fariab

(usa Manjaro Linux)

Enviado em 07/09/2017 - 14:26h

hrcerq escreveu:

Olá.

Para retornar o valor de uma JComboBox, você usa o método getSelectedItem. Por exemplo, vamos supor que eu crie uma JComboBox com duas opções String:

String[] opcoes = {"Opção 1","Opção 2"};
JComboBox cb = new cb<String>(opcoes);


Para retornar o valor selecionado:

String opcaoSelecionada = String.valueOf(cb.getSelectedItem()); 


No caso da JList, você pode retornar somente o primeiro valor selecionado usando este mesmo método (getSelectedItem)...

String selecao = jList.getSelectedItem(); 


... ou pode retornar uma lista de todos os itens selecionados. Vamos supor que essa lista tenha valores String e você quer retornar todas as opções selecionadas. Você pode fazer isso com o método getSelectedValuesList:

List<String> selecao = jList.getSelectedValuesList(); 


Feito isso, você pode varrer a lista e trabalhar com os valores selecionados (no seu caso, adicioná-los à jTextArea). Lembre-se de verificar o tipo de dados que está trabalhando (neste exemplo usei String).

Quando em dúvida sobre a API Java, é sempre bom verificar o javadoc da versão que estiver usando. Por exemplo, se estiver usando Java 8:

http://docs.oracle.com/javase/8/docs/api/

Atenção: O Java Swing está em estágio de depreciação, a Oracle já anunciou que ele está sendo substituído pelo JavaFX, que apresenta uma estrutura mais consistente e completa. Conhecimento em Java Swing ainda será necessário por um tempo, por questões de manutenção e migração, porém não é recomendável criar aplicações novas em Swing.

---

Atenciosamente,
Hugo Cerqueira


Oi, obrigado por me responder :)

Tive um problema quando declarei a variável para receber a opção selecionada no jList.

Print: http://prntscr.com/gibuf4

No caso, meu jList tem os itens de uma calculadora: SOMA,SUBTRAÇÃO,DIVISÃO E MULTIPLICAÇÃO.

E meu ComboBox tem os números de 0 a 9.


4. Re: jTextArea - jComboBox e jList - Como usar? [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 07/09/2017 - 14:48h

Foi erro meu, peço desculpas. No caso do JList, o nome do método não é getSelectedItem e sim getSelectedValue. Já corrigi no meu comentário anterior, inclusive.

Mas de qualquer forma, observe que se usar o método getSelectedValue, só vai retornar o menor dos valores selecionados da lista. Se quiser retornar todos os itens selecionados, precisa usar o método getSelectedValuesList.

---

Atenciosamente,
Hugo Cerqueira


5. Re: jTextArea - jComboBox e jList - Como usar? [RESOLVIDO]

Gabriel
fariab

(usa Manjaro Linux)

Enviado em 07/09/2017 - 14:57h

hrcerq escreveu:

Foi erro meu, peço desculpas. No caso do JList, o nome do método não é getSelectedItem e sim getSelectedValue. Já corrigi no meu comentário anterior, inclusive.

Mas de qualquer forma, observe que se usar o método getSelectedValue, só vai retornar o menor dos valores selecionados da lista. Se quiser retornar todos os itens selecionados, precisa usar o método getSelectedValuesList.

---

Atenciosamente,
Hugo Cerqueira


Obrigado mais uma vez,

Ainda não estou conseguindo fazer o código funcionar. Dessa vez, vou dar os detalhes importantes que esqueci de passar hehe

Minha interface: http://prntscr.com/gic81t
Meu código: http://prntscr.com/gic95i

O ComboBox já consegui resolver, obrigado ^^
Agora só preciso arrumar o jList


6. Re: jTextArea - jComboBox e jList - Como usar? [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 07/09/2017 - 16:00h

Parece que é apenas um problema de conversão. Tente alterar a linha com erro para:

String lista = jList.getSelectedValue().toString(); 


Ou para:

String lista = String.valueOf(jList.getSelectedValue()); 

---

Atenciosamente,
Hugo Cerqueira


7. Re: jTextArea - jComboBox e jList - Como usar?

Gabriel
fariab

(usa Manjaro Linux)

Enviado em 07/09/2017 - 16:23h

hrcerq escreveu:

Parece que é apenas um problema de conversão. Tente alterar a linha com erro para:

String lista = jList.getSelectedValue().toString(); 


Ou para:

String lista = String.valueOf(jList.getSelectedValue()); 

---

Atenciosamente,
Hugo Cerqueira


Agora as linhas de código não apresentam nenhum erro, mas por algum motivo, o meu if não está funcionando.


int combox = jComboBox.getSelectedIndex();
String lista = String.valueOf(jList.getSelectedValue());

if(lista.equals("SOMA")){
jTextArea.setText("Olá");
}


Se eu colocar a variável do jComboBox dentro do if, o texto é exibido normalmente, só esse do jList que não funciona


8. Re: jTextArea - jComboBox e jList - Como usar? [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 07/09/2017 - 16:56h

Agora você precisa debugar o seu código, precisa descobrir qual o valor da variável lista no momento em que clica na opção "SOMA" pra ter certeza de que está recebendo o valor correto.

Um erro comum é esquecer de vincular o Listener (neste caso o ListSelectionListener ou MouseListener) ao objeto de interação (neste caso, a JList). Se não fizer isso, quando clicar na lista, a variável "lista" não é atualizada.

---

Atenciosamente,
Hugo Cerqueira


9. Re: jTextArea - jComboBox e jList - Como usar?

Gabriel
fariab

(usa Manjaro Linux)

Enviado em 07/09/2017 - 19:46h

hrcerq escreveu:

Agora você precisa debugar o seu código, precisa descobrir qual o valor da variável lista no momento em que clica na opção "SOMA" pra ter certeza de que está recebendo o valor correto.

Um erro comum é esquecer de vincular o Listener (neste caso o ListSelectionListener ou MouseListener) ao objeto de interação (neste caso, a JList). Se não fizer isso, quando clicar na lista, a variável "lista" não é atualizada.

---

Atenciosamente,
Hugo Cerqueira


E como eu faço para vincular?

Desculpe, essa é uma das primeiras interfaces que crio. Não estou muito familiarizado com elas ainda.

No final, o programa tem que exibir a tabuada de algum número, por exemplo.

Se no ComboBox estiver 4 e o jList estiver divisão, o jTextArea tem que exibir a tabuada de divisão do 4


10. Re: jTextArea - jComboBox e jList - Como usar? [RESOLVIDO]

Gabriel
fariab

(usa Manjaro Linux)

Enviado em 07/09/2017 - 20:18h

fariab escreveu:

hrcerq escreveu:

Agora você precisa debugar o seu código, precisa descobrir qual o valor da variável lista no momento em que clica na opção "SOMA" pra ter certeza de que está recebendo o valor correto.

Um erro comum é esquecer de vincular o Listener (neste caso o ListSelectionListener ou MouseListener) ao objeto de interação (neste caso, a JList). Se não fizer isso, quando clicar na lista, a variável "lista" não é atualizada.

---

Atenciosamente,
Hugo Cerqueira



E como eu faço para vincular?

Desculpe, essa é uma das primeiras interfaces que crio. Não estou muito familiarizado com elas ainda.

No final, o programa tem que exibir a tabuada de algum número, por exemplo.

Se no ComboBox estiver 4 e o jList estiver divisão, o jTextArea tem que exibir a tabuada de divisão do 4


Consegui fazer o sistema funcionar, porém, agora ele só funciona uma vez. Para exibir uma mensagem diferente, tem que reiniciar


11. Re: jTextArea - jComboBox e jList - Como usar?

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 07/09/2017 - 20:28h

Ok. Eu vou tentar explicar brevemente, mas pra ter um entendimento bom eu sugiro que você pesquise mais sobre como funciona o controle de eventos no Java Swing.

Mas basicamente é o seguinte: pra fazer as coisas funcionarem, você precisa definir como o programa vai se comportar quando determinado tipo de evento acontece. Um clique, uma tecla pressionada, um ajuste no tamanho da tela... tudo isso são eventos. Como você pode ver, existem tipos diferentes de eventos, eventos de mouse (clicar, soltar, arrastar...), de teclas (pressionar tecla, soltar tecla), de janelas (abrir,redimensionar,fechar), entre outros.

Então você precisa elencar os eventos que interessam para o seu programa funcionar. Por exemplo, se o usuário redimensiona a janela, é irrelevante pra você, então você pode desconsiderar este evento. Mas se ele clica em alguma opção da lista, aí sim é um evento relevante pra você. Então no caso desse evento, você deve criar um Listener (escutador) que vai verificar quando esse evento acontece e realizar uma ação definida por você.

Os listeners são classes que implementam alguma interface Listener (por exemplo, ActionListener e MouseListener são interfaces). Para o JList, é interessante usar o ListSelectionListener. Não que ele seja a única opção, mas é a mais adequada para esse caso.

Quando você define uma classe que implementa essa interface (ListSelectionListener), deve definir nela o método valueChanged. No corpo desse método, você coloca o que deve acontecer quando alguém selecionar alguma opção da lista. Uma sugestão que faço é você criar essa classe dentro da classe que contém o JList e o JTextArea, ou seja, uma classe aninhada.

Por fim, deve vincular o listener ao JList, com o método addListSelectionListener do JList. Por exemplo:

public class MeuPrograma extends JFrame {

// Código da janela que tem o JList
// ...

jList.addListSelectionListener(new MotorInterno());

public class MotorInterno implements ListSelectionListener {

public void valueChanged(ListSelectionEvent e) {
// Código do que deve acontecer quando selecionarem uma opção
}
}
}


---

Atenciosamente,
Hugo Cerqueira


12. Re: jTextArea - jComboBox e jList - Como usar? [RESOLVIDO]

Gabriel
fariab

(usa Manjaro Linux)

Enviado em 07/09/2017 - 21:32h

hrcerq escreveu:

Ok. Eu vou tentar explicar brevemente, mas pra ter um entendimento bom eu sugiro que você pesquise mais sobre como funciona o controle de eventos no Java Swing.

Mas basicamente é o seguinte: pra fazer as coisas funcionarem, você precisa definir como o programa vai se comportar quando determinado tipo de evento acontece. Um clique, uma tecla pressionada, um ajuste no tamanho da tela... tudo isso são eventos. Como você pode ver, existem tipos diferentes de eventos, eventos de mouse (clicar, soltar, arrastar...), de teclas (pressionar tecla, soltar tecla), de janelas (abrir,redimensionar,fechar), entre outros.

Então você precisa elencar os eventos que interessam para o seu programa funcionar. Por exemplo, se o usuário redimensiona a janela, é irrelevante pra você, então você pode desconsiderar este evento. Mas se ele clica em alguma opção da lista, aí sim é um evento relevante pra você. Então no caso desse evento, você deve criar um Listener (escutador) que vai verificar quando esse evento acontece e realizar uma ação definida por você.

Os listeners são classes que implementam alguma interface Listener (por exemplo, ActionListener e MouseListener são interfaces). Para o JList, é interessante usar o ListSelectionListener. Não que ele seja a única opção, mas é a mais adequada para esse caso.

Quando você define uma classe que implementa essa interface (ListSelectionListener), deve definir nela o método valueChanged. No corpo desse método, você coloca o que deve acontecer quando alguém selecionar alguma opção da lista. Uma sugestão que faço é você criar essa classe dentro da classe que contém o JList e o JTextArea, ou seja, uma classe aninhada.

Por fim, deve vincular o listener ao JList, com o método addListSelectionListener do JList. Por exemplo:

public class MeuPrograma extends JFrame {

// Código da janela que tem o JList
// ...

jList.addListSelectionListener(new MotorInterno());

public class MotorInterno implements ListSelectionListener {

public void valueChanged(ListSelectionEvent e) {
// Código do que deve acontecer quando selecionarem uma opção
}
}
}


---

Atenciosamente,
Hugo Cerqueira


Muito obrigado pelo suporte, consegui terminar o projeto.

Obrigado mais uma vez. ^^







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts