Menu ustawienie

0

Witam Was

Mam mały problem ze stworzeniem morze i trywialnej rzeczy jaką jest Menu w Aplecie w Javie.

Chce aby menu nie było standardowo wyglądającym Menu klikanym z góry tylko bardziej z lewej strony
natomiast każda kolejna opcja powinna wysuwać się do prawej strony.
Podobną rzecz obrazujący example znalazłem, ale tam każda opcja menu ma takie same opcje
nie do końca wiem jak to ustawić.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPopupMenu;

/**
 * @author ges
 * @author kwalrath
 */
/* MenuLayoutDemo.java requires no other files. */

public class MenuLayoutDemo {
	
  public JMenuBar createMenuBar() {
    JMenuBar menuBar = new JMenuBar();
    menuBar.setLayout(new BoxLayout(menuBar, BoxLayout.PAGE_AXIS));
    JMenu fileMenu = new JMenu("File");
    menuBar.add(fileMenu);
    menuBar.add(createMenu("Menu 2"));
    menuBar.add(createMenu("Menu 3"));

    menuBar.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, Color.BLACK));
    return menuBar;
  }

  // used by createMenuBar
  public JMenu createMenu() {
    JMenu m = new HorizontalMenu();
    m.add("Menu item #1 in ");
    m.add("Menu item #2 in " );
    m.add("Menu item #3 in " );
    HorizontalMenu fileMenu = new HorizontalMenu();
    

    JMenu submenu = new HorizontalMenu("Submenu");
    submenu.add("Submenu item #1");
    submenu.add("Submenu item #2");
    m.add(submenu);

    return m;
  }

  
  private static void createAndShowGUI() {
    
    JFrame frame = new JFrame("MenuLayoutDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    
    MenuLayoutDemo demo = new MenuLayoutDemo();
    Container contentPane = frame.getContentPane();
    contentPane.setBackground(Color.WHITE); // contrasting bg
    contentPane.add(demo.createMenuBar(), BorderLayout.LINE_START);


    frame.setSize(300, 150);
    frame.setVisible(true);
  }

  public static void main(String[] args) {
    
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        createAndShowGUI();
      }
    });
  }

  class HorizontalMenu extends JMenu {
    HorizontalMenu(String label) {
      super(label);
      JPopupMenu pm = getPopupMenu();
      pm.setLayout(new BoxLayout(pm, BoxLayout.LINE_AXIS));
    }

    public Dimension getMinimumSize() {
      return getPreferredSize();
    }

    public Dimension getMaximumSize() {
      return getPreferredSize();
    }

    public void setPopupMenuVisible(boolean b) {
      boolean isVisible = isPopupMenuVisible();
      if (b != isVisible) {
        if ((b == true) && isShowing()) {
          // Set location of popupMenu (pulldown or pullright).
          // Perhaps this should be dictated by L&F.
          int x = 0;
          int y = 0;
          Container parent = getParent();
          if (parent instanceof JPopupMenu) {
            x = 0;
            y = getHeight();
          } else {
            x = getWidth();
            y = 0;
          }
          getPopupMenu().show(this, x, y);
        } else {
          getPopupMenu().setVisible(false);
        }
      }
    }
  }
}

przy okazji doradźcie czy budowa takiej aplikacja, bo ma to być coś w stylu office word w takiej perspektywie ma

sens.

Pozdrawiam

0

W tagach postu jest aplet, w treści postu jest słowo aplet. W kodzie ani śladu apletu. Ty wiesz co oznacza zwrot aplet Javy?

0

W kodzie mam zainicjowany obiekt Frame i Panel, który jak mi się wydaje jest niezbędny do tego żeby zbudować Panel i np wstawić przycisk. Chyba, że aplet wygląda inaczej.

0

Tak właśnie jest, aplet wygląda zupełnie inaczej, na ogół nie ma żadnego Frame'a i jest uruchamiany za pośrednictwem przeglądarki. Poza tym, aplety są praktycznie na wymarciu.

0

Ok więc , jest jakaś możliwość przerobienia tego przykładu obrazującego proste menu tak aby każda opcja menu posiadała inne podmenu tyle, że z lewej strony ?

Zależy mi na wykorzystaniu AWT oraz Swing'a. Chyba, że budowa menu z takiej perspektywy jest mało sensowna.

0

Zamieść oryginalny, poprawny kod. Ten, który wkleiłeś ma błędy składniowe.

1 użytkowników online, w tym zalogowanych: 0, gości: 1