Botões ao lado de um menu

Boa noite,

estou tentando fazer os botões da minha interface gráfica principal ficarem ao lado de alguns menus, como nas imagens desse site.

O que eu tentei:

  • Colocar uma JMenuBar ao lado de uma JToolBar, dentro de um painel com FlowLayout para a esquerda;
  • Colocar a JMenuBar dentro da JToolBar;
  • Colocar os menus na JToolBar;

Em todas elas alguma coisa ficou esquisito.

A melhor coisa que conseguir fazer foi adicionar os botões diretamente na JMenuBar principal, mas os menus ficaram enormes, acompanhando a geometria dos botões.

Eu queria algo semelhante a isso, mas que a geometria dos menus fosse preservada.

Alguém poderia me dar uma luz? Não acredito que seja algo complicado, to me sentindo somar 2+2 e achar 5 :frowning:

<>

[code]package com.venus.ui;

import java.awt.EventQueue;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;

/**

  • Apenas um teste =D
    */
    public class ApplicationWindow extends JFrame {

    // nossa barra de menus
    JMenuBar menuBar;
    String[] menus = new String[]{
    “Arquivo”,
    “Ações”,
    “Ferramentas”,
    “Ajuda”
    };
    // referencia para alguns ícones
    String[] iconRef = new String[]{
    "/com/venus/rsrc/icons/document-new.png",
    "/com/venus/rsrc/icons/document-open.png",
    "/com/venus/rsrc/icons/document-save.png",
    "/com/venus/rsrc/icons/document-save-as.png",
    "/com/venus/rsrc/icons/edit-undo.png",
    "/com/venus/rsrc/icons/edit-redo.png",
    "/com/venus/rsrc/icons/document-properties.png"
    };

    /**

    • Construtor
      */
      public ApplicationWindow() {
      // instanciando
      menuBar = new JMenuBar();
      for (int i = 0; i < menus.length; i++) {
      JMenu menu = new JMenu(menus[i]);
      for (int j = 0; j < 4; j++) {
      JMenuItem item = new JMenuItem("Item " + (j + 1));
      menu.add(item);
      }
      menuBar.add(menu);
      }

      // adicionando botões aa barra de menus
      // FIXME: é possível ajustar a geometria dos menus (?)
      for (int i = 0; i < iconRef.length; i++) {
      JButton button = new JButton(new ImageIcon(getClass().getResource(iconRef[i])));
      button.setBorderPainted(false); // para o botão ficar com aparência de quando está numa JToolBar
      menuBar.add(button);
      }

      // configurando nossa janela
      setJMenuBar(menuBar);
      setSize(600, 400);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }

    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

         public void run() {
             try {
                 JFrame.setDefaultLookAndFeelDecorated(true);
                 String sysLaf = UIManager.getSystemLookAndFeelClassName();
                 UIManager.setLookAndFeel(sysLaf);
                 new ApplicationWindow().setVisible(true);
             } catch (Exception ex) {
                 System.out.println("Ah não =(");
                 ex.printStackTrace();
             }
         }
     });
    

    }
    }
    [/code]

Fala marcos

recarrega sua imagem ai para que possamos analisar juntos ^^

flw um abraço .

Opa,

editei o post original, coloquei um código que faz mais ou menos o que quero… mas ainda assim não ficou a meus gosto =( os botões dos menus principais acompanharam a geometria dos botões.

marcos.9306 desculpe por intrometer neste tópico e não poder ajudar, mas fiqueii extremamente IMPRESSIONADO com o layout do seu programa… Muito mesmo… Pode me dizer como você fez?

Se quiser me add no msn por favor:
unicorendaextra@hotmail.com

Já tentou usar um border layout e deixar o menu na west e o resto no center?

Bem eu acho o border layout uma bela droga, mas no seu caso pode ser útil. Apesar de que problemas com redimensionamento são quase certos.

Bem, se você quer limitar o tamanho do menu, recomendo colocar alguma coisa pra ocupar o lugar(isso é mais complicado do que parece). Tente os seguintes passos:

1.Crie um Jpanel com BoxLayout, eixo Y.
2.crie um vertical glue nesse mesmo Jpanel(senão souber o que é isso, de uma pesquisada)
3.Insira a JMenuBar no painel
4.Crie outro painel, flow layout mesmo.
5.Insira o primeiro painel nesse que você acabou de criar
6.Insira um separator nesse ultimo painel
7.Insira tua Toolbar no último painel

Agora jogue esse painel pro topo de algum jeito.

Isso é se você quiser fazer manualmente, mas o melhor mesmo é usar aqueles troços do netbeans de drag’n drop. Talvez você tenha que ajustar alguns tamanhos, mas isso é com você.

Se ainda tiver dúvidas, posta aí.

eu nao entendi direito as sugestões que deram…

por mim criaria 2 paineis ( 1 pros botões e outro pros ícones ), ambos com a jmenubar… e alinharia os dois… pronto… sem stress

mas se vc tiver tempo e o sistema for realmente foda, pode criar um menu assim no proprio lookandfeel e dae poderia usar o padrão em qq lugar do projeto…

ps: ficou bom o visual… eu deixaria assim… =)

Já usei BorderLayout, FlowLayout, coloquei 9³³ painéis na tela, mas o maior problema é que a barra de menu insiste em ficar com seu desenho e com suas cores, mesmo tirando sua opacidade e totalmente desalinhada, parece até que tem vontade própria.

Essa tela foi feita no netbeans, a única coisa que fiz foi adicionar botões diretamente na barra de menus, mas como disse, os menus acompanham a geometria dos botões.

Dúvida: é possível fazer um menu abrir sem que ele esteja necessariamente em uma JMenuBar? Isso resolveria o problema, pois seria apenas o trabalho de adicionar os menus antes dos botões na barra de ferramentas ou em um painel qualquer…