# Menu Position verändern?



## licht400 (20. Apr 2007)

Hallo, habe dich Suche hier genutzt und garnichts gefunden!

ich möchte, dass mein Menu nicht wie standard links ist, sondern rechts.
aber es gibt kein befeehl für positon oder ähnlichem!

könnt ihr mir da mal ein tip geben oder ist das Menu einfach immer links als standard und nicht änderbar.!?


----------



## Ariol (20. Apr 2007)

Man sollte sich auch mal die Doc von den benutzen Klassen durchlesen.

.setAlignmentX(JMenuBar.RIGHT_ALIGNMENT);

Habs jetzt nicht getetst


----------



## licht400 (20. Apr 2007)

ja bei JMenu, aber ich habe ja nur ein Menu, da klappt das nicht.
da kann ich keine alignment setzen!


```
MenuBar hauptMenue = new MenuBar(); 
                Menu menue1 = new Menu("Suchen");
                menue1.add("suchen");      
                menue1.add("beenden");
//das funktioniert nicht                menue1.setAlignmentX(JMenuBar.RIGHT_ALIGNMENT);
                
                menue1.addSeparator();
                hauptMenue.setHelpMenu(menue1);
                setMenuBar(hauptMenue);
                menue1.addActionListener(this);
```


----------



## licht400 (24. Apr 2007)

also kann ich das nicht ändern , da keiner antwortet?!


----------



## AlArenal (24. Apr 2007)

Warum sollte man den Text in einem Menü rechtsbündig darstellen? (außer er ist auf Arabisch...)


----------



## licht400 (24. Apr 2007)

naja..ich habe ein jtree menu links..und rechts soll  das menu sein..


aber das bekomm ich nicht hin, weil ich kein befehl finde...


----------



## L-ectron-X (24. Apr 2007)

Wenn du einen JTree benutzt, solltest du auch JMenuBar, JMenu und JMenuItem einsetzen, da man Swing und AWT besser nicht mischen sollte. (FAQ)


----------



## licht400 (24. Apr 2007)

mh ja stimmt, aber die sachen sind ja voneinander getrennt!
die funtionalität besteht ja, möcht ja nur das menu standardmäßig von der linke seite los haben. ich möcht es einfach rechts stehen haben!


----------



## AlArenal (24. Apr 2007)

licht400 hat gesagt.:
			
		

> naja..ich habe ein jtree menu links..und rechts soll  das menu sein.



Hä?
Also die Anwendungen die ich kenne haben nur ein Hauptmenü. Darum heißt es vermutlich auch "Haupt"menü. Und was zur Hölle soll ein "JTree Menu" sein? Wenn du schon neue Begriffe erfindest, musst du sie uns schon erklären


----------



## L-ectron-X (24. Apr 2007)

Dann bleibt dir wohl nichts anderes übrig, als das Menu unter Benutzung von Panel, Label und PopupMenu selbst zu schreiben. Ich weiß nicht, ob der Aufwand dafür gerechtfertigt ist. 
Da ist es doch wesentlich einfacher, vor die Menü-Komponenten das "J" der Swing-Komponenten davorzusetzen, um in den Genuss eines rechtsliegenden Menüs zu kommen.


----------



## licht400 (24. Apr 2007)

mhh nagut, aber wenn ich das J von mein Menu mache..aber dann funktioniert mein setJHelpMenu nicht! bzw wieso zeigt mir kein Menu wenn ich setJHelpMenu weglasse?


----------



## L-ectron-X (24. Apr 2007)

Zeige mal den Code von deinem Menü.


----------



## licht400 (24. Apr 2007)

der steht ja schon oben!


```
MenuBar hauptMenue = new MenuBar();
                Menu menue1 = new Menu("Suchen");
                menue1.add("suchen");     
                menue1.add("beenden");
//das funktioniert nicht     
                menue1.setAlignmentX(JMenuBar.RIGHT_ALIGNMENT);
                menue1.addSeparator();
                hauptMenue.setHelpMenu(menue1);
                setMenuBar(hauptMenue);
                menue1.addActionListener(this);
```

und jetz habe ich einfach ein J davor gesetzt..

und so jetze!


```
JMenuBar menuBar = new JMenuBar();
                JMenu menu = new JMenu("suchen");
                menuBar.add(menu);
                JMenuItem item;
                item = new JMenuItem("suchen");      
                item = new JMenuItem("beenden");  
                menu.add(item);
                menuBar.add(menu);
```

aber nichts wird jetz erstmal angezeigt!


----------



## L-ectron-X (24. Apr 2007)

licht400 hat gesagt.:
			
		

> der steht ja schon oben!


Ja schon, aber der kann sich doch im Verlauf schon geändert haben.

Da fehlt doch noch

```
setJMenuBar(menuBar);
```
Und das Fenster muss auch eine Swing-Komponente sein.


----------



## licht400 (24. Apr 2007)

danke..klappt fast, er zeigt mir nur beenden an !

hö wieso das den?

edit: geht jetz! habe die items ja überschrieben ;-)..



so..
aber warum funktionert meine action perfomed net mehr?


```
public void actionPerformed(ActionEvent evt) {
  //Menupunkte einzeln aufrufen
  if (evt.getSource() instanceof MenuItem){ 
        String menuAdd = evt.getActionCommand();
        System.out.println(menuAdd);
        if (menuAdd.equals("beenden")){
            if (JOptionPane.showConfirmDialog(this, "Möchten Sie wirklich aufhören","Frage", 
                   JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE)
                   == JOptionPane.YES_OPTION) {
                    System.exit(0);
                    }
            }
```


----------



## L-ectron-X (24. Apr 2007)

Weil du zwei Referenzen mit item benannt hast. Du überdeckst also vorher erzeugte Referenzen mit gleichem Namen.

```
JMenuItem suchenItem, beendenItem; 

suchenItem = new JMenuItem("suchen");      
beendenItem = new JMenuItem("beenden");
```


----------



## licht400 (24. Apr 2007)

jep..schau mal bitte eine seite zurück auf mein edit!


----------



## L-ectron-X (24. Apr 2007)

Fällt dir irgendwas auf?

```
if (evt.getSource() instanceof MenuItem){
```

Und warum überhaupt so kompliziert? Geht doch einfacher:

```
Object quelle = evt.getSource();
if(quelle == beendenItem) {
...
```


----------



## licht400 (24. Apr 2007)

danke..doch aufgefallen schon nur keine lösung!


habs geändert , so wie du es geschrieben hast, aber denoch reagiert es nicht ..


----------



## L-ectron-X (24. Apr 2007)

OK, zeig mal den aktuellen Stand.


----------



## licht400 (24. Apr 2007)

menu

```
JMenuBar menuBar = new JMenuBar();
                JMenu menu = new JMenu("suchen");
                menuBar.setLayout(new BorderLayout());
                menuBar.add(menu);
                sitem = new JMenuItem("suchen");      
                bitem = new JMenuItem("beenden");  
                menu.add(sitem);
                menu.add(bitem);
                menuBar.add(menu, BorderLayout.EAST);
                setJMenuBar(menuBar);
                menu.addActionListener(this);
                addWindowListener(this);
```

action

```
public void actionPerformed(ActionEvent evt) {

       Object quelle = evt.getSource();
       System.out.println(quelle);
        if (quelle == bitem){
            if (JOptionPane.showConfirmDialog(this, "Möchten Sie wirklich aufhören","Frage", 
                   JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE)
                   == JOptionPane.YES_OPTION) {
                    System.exit(0);
                    }
            }
```

edit: das bitem benötigt wohl den actionListener und nicht das menu oder?

so..dann gibt der mir aus..wenn ich auf beenden drücke! 

"javax.swing.JMenuItem[,1,24,77x21,alignmentX=0.0" wieso das den?

edit2: jetz gehts. habe den 2 item den actionlistener hinzugefügt.


danke für deine hilfe!

kannst du mal bei * www.java-forum.org/de/viewtopic.php?p=283019#283019* voirbei schauen..da warst du auch schon aktiv ;-)!


----------



## L-ectron-X (24. Apr 2007)

Gut, und was genau meinst du mit





> aber denoch reagiert es nicht


?
Welche Reaktion erwartest du?


----------



## licht400 (24. Apr 2007)

na wo ich drauf geklickt habe, da kam nix, also keine action, da ich den items keinem actionlistener gegeben habe!

aber klappt jetz!

danke! cool wäre wenn du dir den link mal anschaust


----------



## L-ectron-X (24. Apr 2007)

Mit XML kenne ich mich nicht aus.


----------



## licht400 (24. Apr 2007)

k kein problem.

da schnüffel ich weiter in meinem code rum!
denoch vielen dank


----------

