Menu com Combobox

9 respostas
debug

Boa tarde galera!
primeiro... estou duplicando esse topico, pois acho que tinha postado no lugar errado :(

Seguinte... estou add um combobox no menu do MDI, porém percebi quando acesso o combobox ao dar um clique na combo os itens do menu e submenu do MDI desaparece.

a minha ideia é ter um menu que acesso uma combo, mas enquanto estou selecionando o item da combo deve manter visivel o menu e/ou submenu referente a combobox.

veja o exemplo

import javax.swing.*; 
public class Combo extends JFrame { 
JDesktopPane desktop; 

public Combo() { 
JMenuBar barra = new JMenuBar(); 
JMenu tec = new JMenu("Tecnologia"); 
JMenu gsm = new JMenu("GSM"); 
JComboBox cbgsm = new JComboBox(); 
cbgsm.addItem("modelo1"); 
cbgsm.addItem("modelo2"); 
cbgsm.addItem("modelo3"); 
cbgsm.addItem("modelo4"); 
gsm.add(cbgsm); 
tec.add(gsm); 

barra.add(tec); 
setJMenuBar(barra); 

desktop = new JDesktopPane();//crio obj 
setContentPane(desktop);// configuro como mdi 
setExtendedState(MAXIMIZED_BOTH); 
setVisible(true); 

}
public static void main(String args[]){ 
Combo app = new Combo(); 
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
}
estou usando eclipse

Como posso acessar os itens da combox sem desaparecer o menu que acessa a combo?

caso nao esteja claro favor rodem esse exemplo e perceberam

9 Respostas

ViniGodoy

Você pode começar usando uma das boas práticas do fórum: Deixar o seu código formatado com as tags code.

Se ainda não sabe fazer isso, leia esse tópico aqui:
http://www.guj.com.br/posts/list/50115.java

ViniGodoy

Normalmente, não se usa ComboBoxes em menus. Abra uma janela externa (se forem muitos itens) ou use RadioButtonMenuItem, como no exemplo abaixo:

import javax.swing.ButtonGroup;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JRadioButtonMenuItem;

public class Combo extends JFrame
{
    private JDesktopPane desktop;

    public Combo() {
        JMenuBar barra = new JMenuBar();
        JMenu tec = new JMenu("Tecnologia");
        JMenu gsm = new JMenu("GSM");
        ButtonGroup bgModelo = new ButtonGroup();
        for (int i = 1; i < 5; i++) {
            JRadioButtonMenuItem miRadio = new JRadioButtonMenuItem("modelo" + i);
            gsm.add(miRadio);
            bgModelo.add(miRadio);
        }
        
        tec.add(gsm);

        barra.add(tec);
        setJMenuBar(barra);

        desktop = new JDesktopPane();// crio obj
        setContentPane(desktop);// configuro como mdi
        setExtendedState(MAXIMIZED_BOTH);
        setVisible(true);

    }

    public static void main(String args[]) {
        Combo app = new Combo();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

(Note como fica melhor o código usando a tag code!)

debug

ViniGodoy
obrigado pela dica :wink:

a questao de eu precisar um combobox é eu carregos os itens de uma tablea, assim fica facilde atualizar o menu do meu MDI.

nessa combo tem mais de 30 itens :frowning:

como posso agrupar o combo com menu, talvez assim aquand visualizar o combo nao desapareça o menu.

tem outra sugestao?

ViniGodoy

Abra uma Dialog separada. De qualquer forma, menus com combos não são uma coisa muito comum nos ambientes de janelas por aí.

debug

Bom vou continuar na pesquisa, no meu caso irei precisar mesmo :?

o que eu percebi que no JMenuItem temos o RadioButton e CheckButton, mas nao Combobox item de um menu.

entao pensei…
existe uma maneira de grupar dois componentes?

no meu caso seria JMenu + JComboBox

qq sugestao agradeço.

Tks!

ViniGodoy

Outra sugestão seria vc fazer um menu estilo os de arquivo.

Você mostra os 5 últimos valores e uma opção "outro…"
Se o cara clicar nessa opção, você mostra uma dialog com a combobox.

Eu geralmente evito construir componentes na mão, embora já tenha feito isso. Geralmente a dor de cabeça é grande demais para manter esse componente funcionando depois. E dificilmente o seu usuário ficará insatisfeito com uma solução ligeiramente diferente.

Especialmente porque isso não existe no Windows e sempre se pode alegar que isso seria um desenvolvimento inteiramente novo e complexo (o que não deixa de ser verdade). Mostre para ele o quanto isso custa, e acho difícil que ele esteja disposto a pagar… ou pelo menos, a não ouvir sua sugestão com muito carinho.

Quando o Swing dá abertura a personalização é uma coisa. Quando você tem que fazer no braço, tratar eventos de mouse e de teclado, é outra completamente diferente…

debug

galera alguma outra dica?

:? :?

debug

:?:

debug

Pessoal será que realmente ninguem nunca passou por isso ? :cry:

No meu caso vou precisar das combos como sub menu (JMenuitem).

Ayres

Criado 4 de maio de 2008
Ultima resposta 4 de jul. de 2008
Respostas 9
Participantes 2