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
<code=java></code>