Olá pessoal,
Esse simples código não está funcionando, pois o menu está centralizado na barra :
[code]
JMenu menu1 = new JMenu(“Ajuda”);
menu1.add(new JMenuItem(“Nomeclatura”));
menu1.add(new JSeparator());
menu1.add(new JMenuItem(“Sobre…”));
menu1.setAlignmentX( Component.RIGHT_ALIGNMENT ) ;
JMenuBar bar = new JMenuBar();
bar.add(menu1);
outerPanel = new JPanel();
outerPanel.add( bar ) ;
[/code]Gostaria que a opção de Ajuda ficasse á direita, que é o padrão dos aplicativos.
Estou esquecendo algum detalhe ?
+++
Não sei se tem um jeito mais fácil de alinhar os menus, mas uma alternativa seria mudar layout manager do JMenuBar.
Eric,
Desculpa se a pergunta é básica, mas como eu poderia fazer isso ?
Pressupõe o uso do netbeans ?
( que por sinal, não o tenho instalado )
+++
Vou passar um exemplo com GridBagLayout, que está na API. Mas se estiver usando MigLayout no seu projeto, aconselho fazer com ele.
JMenuBar bar = new JMenuBar();
bar.setLayout(new GridBagLayout()); // Setei o layout como GridBag
GridBagConstraints esquerda = new GridBagConstraints(); // Constraint para menus a esquerda
esquerda.anchor = GridBagConstraints.WEST;
GridBagConstraints direita = new GridBagConstraints(); // Constraint para menu a direita e com espaçamento
direita.anchor = GridBagConstraints.EAST;
direita.weightx = 1.0;
bar.add(new JMenuItem("Primeiro"), esquerda); // Na hora de adicionar tem que passar uma constraint
bar.add(new JMenuItem("Segundo"), esquerda);
bar.add(new JMenuItem("Terceiro"), esquerda);
bar.add(new JMenuItem("Último"), direita);
Não precisa usar exatamente o GridBag, pode ser qualquer layout que atenda sua necessidade. Pode haver uma forma de fazer isso sem mudar o layout, inclusive já cheguei até a pesquisar sobre, mas sinceramente eu desconheço.
[quote=andre_teprom]Pressupõe o uso do netbeans ?
( que por sinal, não o tenho instalado )[/quote]
Pressuponho apenas que usa swing, por causa do código postado. Acho que a IDE não influencia nisso. Eu mesmo utilizo o Eclipse, mas já usei o Net Beans também.
Outro detalhe que passou despercebido quando olhei o post a primeira vez. O JFrame tem um método setJMenuBar, que serve para especificar o menu bar vinculado ao frame:
frame.setJMenuBar(bar);
Não é necessário adicionar com o método add.
Maravilha !!!
Eric, procedi conforme a sugestão do post anterior, e funcionou perfeitamente.
Muito obrigado novamente.
+++
Você não precisa de nenhum alinhamento. Apenas o setJMenuBar resolve.
JMenu menu1 = new JMenu("Ajuda");
menu1.add(new JMenuItem("Nomeclatura"));
menu1.add(new JSeparator());
menu1.add(new JMenuItem("Sobre..."));
menu1.setAlignmentX( Component.RIGHT_ALIGNMENT ) ;
JMenuBar bar = new JMenuBar();
bar.add(menu1);
frame.setJMenuBar( bar ) ;