• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Hydr0xygen

ComboBox

16 mensagens neste tópico

Olá ;)

nós em aplicações informáticas já demos as combo boxes mas só mesmo o básico que é adicionar os items às mesmas...

Gostaria de saber se é possível fazer isto:

20uu8hg.jpg

o que queria era que à medida que mudasse a opção na combo box mudasse a imagem correspondente à mesma no rectângulo onde diz image...

Já agora o projecto tá dividido em dois panéis, o da esquerda e o da direita...

Abraço ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim é possível, verificar a documentação da classe JComboBox e vê os eventos. Dependendo de como queres fazer, existem vários eventos que podes usar. Tens de implementar o método que pegue no valor da caixa e que altere a imagem de acordo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim é possível, verificar a documentação da classe JComboBox e vê os eventos. Dependendo de como queres fazer, existem vários eventos que podes usar. Tens de implementar o método que pegue no valor da caixa e que altere a imagem de acordo.

qual é o método?

já agora Knitter podes me esclarecer mais uma dúvida?

Eu criei uma nova classe (adicionar) que é accionada através do menubar que permitisse adicionar um item à combobox.. sabes se isto é possivel ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu criei uma nova classe (adicionar) que é accionada através do menubar que permitisse adicionar um item à combobox.. sabes se isto é possivel ?

Não percebi a pergunta. Criaste uma classe que é accionada, como assim accionada?

Para adicionar e remover elementos da caixa será mais simples usar um DefaultComboBoxModel como modelo da caixa e adicionar e remover elementos ao modelo.

Quanto ao método, estava a referir-me ao evento que quiseres usar. Se usares o evento actionPerformed, então tens de implementar o método que faça a acção associada a esse evento.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boa tarde

o que eu tenho até agora é isto

27wuelh.jpg

O programa é:

tenho a janela divida em dois panéis, o da esquerda e o da direita.

O da esquerda tem uma combobox (ainda não criada) onde tem nomes de aviões. na esquerda à medida que eu escolho um avião da combo aparece a sua informação em textfields...

tenho esta opção de adicionar os novos aviões e eu quero que ele actualize a combo box e os respectivos textfields. sei que é um pouco confuso :S

De ínicio tenho na combo box 4 avioes... ao seleccionar 1 aparece nome, velocidade , capacidade e foto... esta info está no painel da direita dentro de textfields que irá permitir que eu altere a sua informação. Em baixo dos txt fields terei um botão para que já não seja possivel alterar o conteúdo dos txt fields acho que é um comando : disable qualquer coisa já não me lembro. Sendo que tenho esta info numa nova classe (das velocidades nomes etc) criei uma nova opção para adicionar um avião caso eu queira... ele adiciona o nome à combobox e à minha base de dados os dados do avião...

é um pouco confuso e se calhar estou a confundir muito :x não me sei explicar muito bem...

desculpem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como disse, para adicionar e remover elementos de uma combobox podes usar a classe DefaultComboBoxModel. Se definires o modelo da tua caixa com uma instância desta classe, podes adicionar e remover elementos da instância que automaticamente a caixa vai ser actualizada.

Para que possas colocar as informações nos campos de texto quando se escolher um elemento da caixa tens de adicionar um actionListener e implementar o código da acção. Em princípio não será mais que ir ver qual é o valor seleccionado, pesquisar esse valor nos teus dados e apresentar as informações necessárias dentro dos campos de texto.

Exemplo da utilização de combobox, retirei o código de um projecto que tinha aqui no IDE por isso não vai ter muita lógica já que tive de remover grande parte do código extra:


private DefaultComboBoxModel cbmodel;
cbmodel = new DefaultComboBoxModel();

jcbxGroup = new JComboBox(); //Instanciar a caixa
jcbxGroup.addActionListener(/*colocar aqui a classe que implementa a interface ActionListener*/);
jcbxGroup.setModel(cbmodel); //definir o modelo a usar

//Adicionar elementos à caixa de selecção
cbmodel.addElement(v);//ao adicionar elementos (e remover) ao modelo, a caixa é actualizada em conformidade automaticamente

Podes usar uma classe anónima para implementar o evento actionListener, ex:

jcbxGroup.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            //código para actualizar os campos de texto
            //o atributo "e" possui alguns métodos úteis
        }
});

Podes ver utilização de caixas de combinação em http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

http://paste.org/pastebin/view/13013

tenho isto até agora mas estou a ter um problema:

ay6a7b.jpg

a informação não me está a aparecer dentro do textfield na sei porquê :S

apenas o nome mesmo assim tá mal porque aparece Nome:Airbus dentro do txtfield quando quero que apareça apenas o Airbus :S

já agora desculpa por ter mandado pm sobre o background, erro meu nao pesquisei :/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O elemento que estás a introduzir dentro do modelo da caixa tem o método toString implementado?

Uma JComboBox apenas sabe como representar texto e ícones, se colocares lá outro objecto é necessário que esse objecto é implemente o método toString com a representação de texto que é para aparecer.

Se não for esse o caso, podes colocar a classe Aviao para ver como está?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Knitter já conseguimos por para a informação aparecer dentro das Textfields, mas nos queriamos que quando abrissemos o programa e na combobox está na opcçao ("Escolha um avião") aparecesse uma mesagem de aviso a dizer para escolher uma opcçao válida, mas queriamos que as textfields desaparecessem...

....

desculpa o código tao extenso ;) (provavelmente tem aí muito codigo desnecessario)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se precisarem de colocar mais código longo usem o pastbin, o P@P tem um em http://paste.portugal-a-programar.org

Se querem isso no arranque da aplicação, basta criarem os campos escondidos inicialmente. Depois, alterem o método que trata do evento actionListener para contemplar esse vosso caso.

Para esconder os elementos, na maior parte dos casos, um simples setVisible(false) resolve o problema. No entanto surge a pergunta: têm mesmo de esconder os campos? Não seria mais simples e mais útil para quem usa o programa ver os campos no local mas tendo os campos inactivos?

Verifiquem a documentação da classe JComboBox, tem tudo o que precisam bem documentado. Atenção que os nomes de classes em Java começam com maiúscula e outra pergunta, porque é que criaram uma classe só para adicionar um elemento ao menu?

Bem, tenho tentando não vos fazer o trabalho ;), vejam a documentação com cuidado que muito do que precisam fazer está lá explicado, quer na documentação oficial das classes quer no tutorial que coloquei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Knitter Obrigado pelo tempo dispendido ;)

Vamos ver o que conseguimos fazer, depois postamos o resultado.

Cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até agora temos isto:

2j5z28w.jpg

e queríamos que quando preenchêssemos os campos de um novo aviao este aparecesse na combobox.

qual a maneira mais facil(se existir) de fazer isso?

Cumpz

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depende de como tiverem o projecto implementado, sem ver o projecto é um pouco às cegas, mas a ideia geral será, no botão "Adicionar à lista" colocar um evento do tipo actionPerformed, e no método desse evento adicionar o elemento que querem ao modelo da caixa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O adicionar já funciona, mas agora é preciso que ele também carregue uma imagem, já pusemos um jfilechooser mas nao sabemos pô-lo a funcionar... :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O JFileChooser dá-vos o ficheiro que foi seleccionado, basta colocarem esse ficheiro como o ícone de uma JLabel.

Não me lembro do código de cor mas creio que a classe ImageIcon tem um método que aceita um File, que vos é dado pelo método getSelectedFile do JFileChooser, se criarem um ImageIcon com esse ficheiro podem usar o método setIcon da JLabel para definir a imagem.

Não sei se será necessário adaptar o ImageIcon a um Icon, mas a classe tem um método para fazer isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora