Menu ustawienie

Menu ustawienie
D1
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 dni
  • Postów:90
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ć.

Kopiuj
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


:)
edytowany 1x, ostatnio: bogdans
bogdans
!Wstawiaj kod w znaczniki <code=java></code>
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
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?


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
D1
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 dni
  • Postów:90
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.


:)
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
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.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
D1
  • Rejestracja:ponad 13 lat
  • Ostatnio:4 dni
  • Postów:90
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.


:)
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.