Menü

Status
Nicht offen für weitere Antworten.

siroFranz

Bekanntes Mitglied
Versteh den Fehler hier absolut nicht :shock: :shock: . Hab keine Lust das für jeden Eintrag einzelnd hinzuschreiben, deswegen hab ich da ne for-Schleife eingebaut, aber irgendwie klappt das mit dem Array nicht.

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Editor extends JFrame implements ActionListener
{
    JPanel panel    = new JPanel();
    JMenuBar menueLeiste = new JMenuBar();
    String[] menue = {"Datei", "Bearbeiten", "Ansicht", "Einfügen", "Format", "Tabelle", "Fenster"};
    int i;
    
    public Editor()
    {
        this.setSize(500, 500);
        this.setTitle("Editor");
        this.panel.setLayout(null);
        Container cp = this.getContentPane();
        cp.add(this.panel);
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e)
    {
    }
    public static void main (String[] args)
    {
        new Editor();
    }
    public void createMenu()
    {      
        for(i=0; i<=menue.length; i++)
        {
            JMenu menue[i] = new JMenu(menue[i]);
            menueLeiste.add(menue[i]);
        }
        this.setJMenuBar(menueLeiste);
    }
}
 

André Uhres

Top Contributor
Code:
...
public class Editor extends JFrame implements ActionListener {
...
    String[] menueText = {"Datei", "Bearbeiten", "Ansicht", "Einfügen", "Format", "Tabelle", "Fenster"};
...
    public Editor() {
...
        createMenu();
        this.setVisible(true);
    }
...
    public void createMenu() {
        for(i = 0; i < menueText.length; i++) {
            JMenu menue = new JMenu(menueText[i]);
            menueLeiste.add(menue);
        }
        this.setJMenuBar(menueLeiste);
    }
}
 

André Uhres

Top Contributor
Code:
/*
 * Editor.java
 *
 * Created on 24 janvier 2007, 08:35
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package menu;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Editor extends JFrame implements ActionListener {
    JPanel panel    = new JPanel();
    JMenuBar menueLeiste = new JMenuBar();
    String[] menueText = {"Datei", "Bearbeiten", "Ansicht", "Einfügen", "Format", "Tabelle", "Fenster"};
    int i;
    
    public Editor() {
        this.setSize(500, 500);
        this.setTitle("Editor");
        this.panel.setLayout(null);
        Container cp = this.getContentPane();
        cp.add(this.panel);
        createMenu();
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
    }
    public static void main(String[] args) {
        new Editor();
    }
    public void createMenu() {
        for(i=0; i < menueText.length; i++) {
            JMenu menue = new JMenu(menueText[i]);
            menueLeiste.add(menue);
        }
        this.setJMenuBar(menueLeiste);
    }
}
 

siroFranz

Bekanntes Mitglied
jetztz kommt die Meldung: ArrayIndexOutOfBoundsException

aber möchte irgendwie, dass der das so ähnlich macht.....

Code:
 public void createMenu()
    {    
        int i;
        
        for(i=0; i<=menue.length; i++)
        {
             JMenu menue[i] = new JMenu(menue[i]);
             menueLeiste.add(menu);
        }
        this.setJMenuBar(menueLeiste);
    }

Also dass jedes JMenu auch einen eigenen Namen hat ?

Gruß
 

JPKI

Top Contributor
Probiers mal ohne Gleichheitszeichen, dann bei Arrays (müsstest du eigentlich wissen) wird ab 0 gezählt :p

Code:
for (i=0; i < menue.length; i++)
...

Alles Klar?
 

JPKI

Top Contributor
Wieso? Die ArrayIndexOutOfBoundsException wird doch dadurch verursacht, dass der Index, der zuletzt aufgerufen wird, nicht vorhanden ist (weil eins zu groß).

Naja, ich gestehe, dass ich auch noch nie so ne komische Konstruktion gesehen hab wie

Code:
JMenu menue[i] = new JMenu(menue[i]);
;-) :p
 

siroFranz

Bekanntes Mitglied
Aber dann kann die eintraege später gar nicht richtig ansprechen, höchstens mit actionCommand
Hab ja dann nicht für jeden JMenu einen Namen, kann man das nicht irgendwie mit dem Array machen ?

Gruß
 

siroFranz

Bekanntes Mitglied
hab jetzt das erwartete Problem, da alle JMenu Einträge gleich heißen, fügt der bei jedem die gleichen JMenuItems ein :roll: :roll:
Die JMenuItems
Code:
 String[] datei     = {"Neu", "Öffnen", "Speichern", "Speichern unter", "Drucken", "Beenden"};
Code:
  public void createMenu()
    {    
        int i;
        int j;
        for(i=0; i<menue.length; i++)
        {
           JMenu menu  =new JMenu(menue[i]);
           menueLeiste.add(menu);
           for(j=0; j<datei.length; j++)
           {
               menu.add(datei[j]);
           }
        }
        this.setJMenuBar(menueLeiste);
    }
 

André Uhres

Top Contributor
Versuch's mal so:
Code:
   public void createMenu() {
        for(i=0; i < datei.length; i++) {
            JMenu menu = new JMenu(datei[i]);
            menueLeiste.add(menu);
        }
        this.setJMenuBar(menueLeiste);
    }
 

siroFranz

Bekanntes Mitglied
lol will die Items nicht als JMenu :bahnhof: :bahnhof:
die sollen ja bei "Datei" rein aber wie gesagt, setzt der die dann bei allen, weil die JMenu einträge gleichheißen. :meld:
Irgendwie muss ich denen die Namen aus dem Array zuweißen, aber wie?

Gruß
 

JPKI

Top Contributor
Vielleicht mit einem zweidimensionalen Object-Array??

Code:
String datei[] = {/* Was du halt so brauchen tust*/};
Object menu[][] = new Object[/*Mit den benötigten Werten initialisieren*/][];

for (/*Inhalt der for-Schleife*/) {

 menu[i] = { datei[i], new JMenu[i] };
}

So ungefähr meinich das...
 

André Uhres

Top Contributor
Sry, hab nicht gesehen, daß du dein Menü Löffelweise servierst :lol:
Wir sind ja schon bei der Nachspeise :lol:
Code:
package menu;
/*
 * Editor.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Editor extends JFrame implements ActionListener {
    JPanel panel    = new JPanel();
    JMenuBar menueLeiste = new JMenuBar();
    String[] menueText = {"Datei", "Bearbeiten", "Ansicht", "Einfügen", "Format", "Tabelle", "Fenster"};
    String[][] items     = {{"Neu", "Öffnen", "Speichern", "Speichern unter", "Drucken", "Beenden"}, {}, {}, {}, {}, {}, {}};
    int i;
    public Editor() {
        this.setSize(500, 500);
        this.setTitle("Editor");
        this.panel.setLayout(null);
        Container cp = this.getContentPane();
        cp.add(this.panel);
        createMenu();
        this.setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
    }
    public static void main(String[] args) {
        new Editor();
    }
    public void createMenu() {
        for(i=0; i < menueText.length; i++) {
            JMenu menu = new JMenu(menueText[i]);
            for (int j = 0; j < items[i].length; j++) {
                JMenuItem mi = new JMenuItem(items[i][j]);
                menu.add(mi);
            }
            menueLeiste.add(menu);
        }
        this.setJMenuBar(menueLeiste);
    }
}
 

André Uhres

Top Contributor
Ist doch ganz einfach.
"items" ist ja wohl klar: ein 2D Array mit den Items pro Menü.
Wir durchlaufen "menueText" und erzeugen ein JMenu mit "menueText", müsste auch klar sein.
Dann durchlaufen wir "items", das heisst alle Items des entsprechenden Menüs, ist auch net kompliziert.
Danach erzeugen wir ein JMenuItem für das Menü mit "items[j]", auch ganz logisch.
Die Items des Menüs werden dem Menü hinzugefügt mit "menu.add(mi);"
 

siroFranz

Bekanntes Mitglied
nochmal kruze frage also dass geht gar nicht, dass man den Einträgen einzelne Name aus nem Array zuordnet ?
Code:
JMenu menue[i] = new JMenu(menue[i]);

Gruß
 

André Uhres

Top Contributor
siroFranz hat gesagt.:
nochmal kruze frage also dass geht gar nicht, dass man den Einträgen einzelne Name aus nem Array zuordnet ?
Code:
JMenu menue[i] = new JMenu(menue[i]);
..
Mit dieser Zuordnung komm ich überhaupt nicht klar.
Der Stringarray "menue[]" kann ja auch nicht gleichzeitig ein JMenu sein.
 

siroFranz

Bekanntes Mitglied
versteh das zwar gerade gar nicht, aber erstmal ne wichtige sache :lol: :lol:
Mein Menü sieht so echt "scheiße" aus !!
Wenn ich die Schleife bei setMenu() mit dem "int e" weglasse, läuft es wieder, aber hab dann immer noch keine Bilder drin. Achja und man muss dann noch das
Code:
, new ImageIcon(icons[i][e]));
weglassen.

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Editor extends JFrame implements ActionListener
{
    JPanel panel              = new JPanel();
    JMenuBar menueLeiste      = new JMenuBar();  
    JMenu menu;
    JMenuItem item;
    JButton button;
    JToolBar toolBarOne       = new JToolBar();
    JToolBar toolBarTwo       = new JToolBar();
    JEditorPane textfeld      = new JEditorPane();
    JScrollPane scroller      = new JScrollPane(textfeld, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    String[ ] menue           = {"Datei", "Bearbeiten", "Ansicht", "Einfügen", "Format", "Tabelle", "Fenster"};    
    String[ ][ ] items        = {
                                  {"Neu", "Öffnen", "Speichern", "Speichern unter", "Drucken", "Beenden"},
                                  {"Kopieren", "Einfügen", "Ausschneiden", "Alles markieren"},
                                  {"Vorschau", "Zoom +", "Zoom -"},
                                  {"Hyperlink", "Grafik"},
                                  {"Schriftgröße", "Schriftart"},
                                  {"Einfügen"},
                                  {"Neues Fenster"},
                                };
    String[ ][ ] icons        = {
                                  {"img/neuesDokument.jpg", "img/oeffnen.jpg", "img/speichern.jpg", " ", "image/drucken.jpg", " "},
                                  {"img/kopieren.jpg", "img/einfuegen", "img/ausschneiden", " "},
                                  {"img/vorschau.jpg", "img/plus", "img/minus"},
                                  {"img/hyperlink/jpg", "img/grafik.jpg"},
                                  {" ", " "},
                                  {"img/tabelle.jpg"},
                                  {"img/fenster.jpg"},
                                };
    String[ ][ ] buttonBar    = {
                                  {"img/neuesDokument.jpg", "img/oeffnen.jpg", "img/speichern.jpg", "img/drucken.jpg", "img/kopieren.jpg", "img/einfuegen.jpg", "img/ausschneiden.jpg", "img/hyperlink.jpg", "img/grafik.jpg", "img/tabelle.jpg"},
                                  {"img/bold.jpg", "img/kursiv.jpg", "img/unterstrichen.jpg"},
                                  {"Neues Dokument", "Öffnen", "Speichern", "Drucken", "Kopieren", "Einfügen", "Ausschneiden", "Hyperlink", "Grafik", "Tabelle"},
                                  {"Fett", "Kursiv", "Unterstrichen"},
                                };  
    
    public Editor()
    {
        this.setSize(500, 500);
        this.setTitle("Editor");
        this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
        this.panel.setLayout(null);
        Container cp = this.getContentPane();
        cp.add(this.panel);
        this.panel.add(this.toolBarOne);
        this.panel.add(this.toolBarTwo);
        this.panel.add(this.scroller);
        this.toolBarOne.setBounds(5, 5, 300, 30);
        this.toolBarTwo.setBounds(200, 40, 300, 30);
        this.scroller.setBounds(5, 75, 485, 375);
        this.setMenu();
        this.setToolBar();
        this.setVisible(true);
    }
    
    public static void main (String[] args)
    {
        Editor editor = new Editor();
    }
    //---------------------------------------------------------------------------------Menue
    public void setMenu()
    {
        for(int i=0; i<this.menue.length; i++)
        {
           this.menu = new JMenu(this.menue[i]);
                for(int j=0; j<this.items[i].length; j++)
                {
                    for(int e=0; e<this.icons[i].length; e++)
                    {
                    this.item = new JMenuItem(this.items[i][j], new ImageIcon(icons[i][e]));
                        if(this.items[i][j] == this.items[0][0])
                        {
                            this.item.setAccelerator(KeyStroke.getKeyStroke('N', Event.ALT_MASK));
                        }
                        if(this.items[i][j] == this.items[0][2])
                        {
                            this.menu.addSeparator();
                        }
                        if(this.items[i][j] == this.items[0][4])
                        {
                            this.menu.addSeparator();
                        }
                        if(this.items[i][j] == this.items[0][5])
                        {
                            this.menu.addSeparator();
                        }
                        if(this.items[i][j] == this.items[1][3])
                        {
                            this.menu.addSeparator();
                        }
                        if(this.items[i][j] == this.items[2][1])
                        {
                            this.menu.addSeparator();
                        }
                        if(this.items[i][j] == this.items[3][1])
                        {
                            this.menu.addSeparator();
                        }
                        if(this.items[i][j] == this.items[4][1])
                        {
                            this.menu.addSeparator();
                        }
                    this.item.addActionListener(this);
                    this.menu.add(this.item);   
                }
            }
                this.menueLeiste.add(menu);
         }
         this.setJMenuBar(this.menueLeiste);
     }
    //---------------------------------------------------------------------------------ToolBar 
     public void setToolBar()
     {
         for(int k=0; k<this.buttonBar[0].length && k<this.buttonBar[2].length; k++)
         {
             this.toolBarOne.add(this.button = new JButton(new ImageIcon(this.buttonBar[0][k])));
             this.button.setToolTipText(this.buttonBar[2][k]);
         }
         for(int l=0; l<this.buttonBar[1].length && l<this.buttonBar[3].length; l++)
         {
             this.toolBarTwo.add(this.button = new JButton(new ImageIcon(this.buttonBar[1][l])));
             this.button.setToolTipText(this.buttonBar[3][l]);
         }
     }
   //----------------------------------------------------------------------------------ActionEvents  
    public void actionPerformed(ActionEvent e)
    {
        if(e.getActionCommand().equals("Neu"))
        {
            this.textfeld.setText("Neues Dokument öffnen ?");
        }
    }            
}
:) [/code]
 

André Uhres

Top Contributor
Code:
    public void setMenu() {
        for(int i=0; i<this.menue.length; i++) {
            this.menu = new JMenu(this.menue[i]);
            for(int j=0; j<this.items[i].length; j++) {
//                for(int e=0; e<this.icons[i].length; e++) {
                this.item = new JMenuItem(this.items[i][j], new ImageIcon(icons[i][j]));
...
//                }
            }
            this.menueLeiste.add(menu);
        }
        this.setJMenuBar(this.menueLeiste);
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J GUI Programmierung Popup-Menü AWT, Swing, JavaFX & SWT 4
J Java GUI Dropdown-Menü anzeigen AWT, Swing, JavaFX & SWT 5
I Von Menü: Seite zu Seite springen (CardLayout) AWT, Swing, JavaFX & SWT 8
B Swing Menü geht nicht AWT, Swing, JavaFX & SWT 5
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
H Swing Auf Klick auf Menü-Eintrag reagieren AWT, Swing, JavaFX & SWT 0
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
L JavaFX Mehrere JavaFX Szenen mit einem Menü AWT, Swing, JavaFX & SWT 1
M Menü ohne Menübar umsetzen[SWT] AWT, Swing, JavaFX & SWT 8
RalleYTN Swing Menü für Texteditor (Rechtsklick) AWT, Swing, JavaFX & SWT 4
D javafx.scene.control.TreeView als dropdown Menü AWT, Swing, JavaFX & SWT 6
G JavaFX Menü und mehrere Scenes AWT, Swing, JavaFX & SWT 16
J Swing aufklappbares Menü AWT, Swing, JavaFX & SWT 0
K JavaFX Fenster aufrufen über Menü AWT, Swing, JavaFX & SWT 1
F Swing Ein 2D-Game Menü mit framefüllenden Button AWT, Swing, JavaFX & SWT 6
J 2D-Grafik Menü programmieren AWT, Swing, JavaFX & SWT 2
X Popup Menü nur bei besonderem Fall öffnen AWT, Swing, JavaFX & SWT 3
U Größe eines Button im Menü ändern AWT, Swing, JavaFX & SWT 1
M Menü mit Buttons AWT, Swing, JavaFX & SWT 8
J Graphisches Game Menü AWT, Swing, JavaFX & SWT 9
J Maus "locken" für Menü AWT, Swing, JavaFX & SWT 8
S SWT: Drop-Down Menü-Einträge mit Tooltip hervorheben AWT, Swing, JavaFX & SWT 3
H Swing Menü mit Bildern AWT, Swing, JavaFX & SWT 2
C Swing Wie kann ich im Programm das Menü schließen AWT, Swing, JavaFX & SWT 2
D Jtable mit Dropdown Menü erweitern funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing In GUI-Builder-JFrame mit Menü Schreiben und Zeichnen AWT, Swing, JavaFX & SWT 4
J Menü umstrukutierem AWT, Swing, JavaFX & SWT 5
P versch. JPanel Klassen über Menü öffnen AWT, Swing, JavaFX & SWT 12
R Bitte kein Menü bei F10 AWT, Swing, JavaFX & SWT 9
A Swing Fenstergröße mittels Menü verändern AWT, Swing, JavaFX & SWT 3
kodela Tastaturereignisse für Menü- und Anwenderbereich AWT, Swing, JavaFX & SWT 14
TheWhiteShadow Swing Problem mit Icon-Menü-Leiste AWT, Swing, JavaFX & SWT 5
E Windows Kontext Menü - Laufendes Programm AWT, Swing, JavaFX & SWT 3
G Menü verschwindet durch .setText() AWT, Swing, JavaFX & SWT 4
J Swing Natives Menü unter OS X erstellen ? AWT, Swing, JavaFX & SWT 8
J Menü beschriftung wird nicht verändert AWT, Swing, JavaFX & SWT 7
J LookAndFeel Titelbar & About Menü AWT, Swing, JavaFX & SWT 6
Eldorado Swing Popup-Menü mit Jspinner AWT, Swing, JavaFX & SWT 4
Semox Swing Shortcuts in Menü realisieren AWT, Swing, JavaFX & SWT 2
R Swing Menü wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
Semox Swing Menü und JPanel AWT, Swing, JavaFX & SWT 6
S Menü Item "abhaken" lassen vom Benutzer AWT, Swing, JavaFX & SWT 2
G Swing Fortschrittsbalken im Fenster: Menü deaktivieren / abfangen? AWT, Swing, JavaFX & SWT 27
L Verzeichnis Menü (Durchsuchen) AWT, Swing, JavaFX & SWT 2
R JRadioButtonGroup - im Menü und im losgelösten Fenster AWT, Swing, JavaFX & SWT 3
J JButton und Menü AWT, Swing, JavaFX & SWT 5
S Dropdown-Menü wie auf der Eclipse-Toolbar AWT, Swing, JavaFX & SWT 7
T einfaches Menü in swing das nicht herunterklappt? AWT, Swing, JavaFX & SWT 4
M Menü mit Layout AWT, Swing, JavaFX & SWT 10
N Fenster mit Menü AWT, Swing, JavaFX & SWT 5
V Menüeinträge im DropDown-Menü deaktivieren AWT, Swing, JavaFX & SWT 3
B Applet Menü AWT, Swing, JavaFX & SWT 6
B Dropdown-Menü im Explorer AWT, Swing, JavaFX & SWT 4
E Anfänger-JPanel aus Menü aufrufen AWT, Swing, JavaFX & SWT 4
T Scrollbalken für ein Menü oder laufendes Dropdown-Menü wie? AWT, Swing, JavaFX & SWT 34
G Funktion für PopUp Menü AWT, Swing, JavaFX & SWT 32
ElViZ JCheckBoxMenuItem Problem - Menü soll offen bleiben. AWT, Swing, JavaFX & SWT 3
L F10 Taste öffnet das Menü AWT, Swing, JavaFX & SWT 7
M Combobox verdeckt Menü AWT, Swing, JavaFX & SWT 2
T Windows-Typisches Menü für Swing AWT, Swing, JavaFX & SWT 3
D Chinesisches Menü AWT, Swing, JavaFX & SWT 6
D Pulldown Menü erstellen; welche Klasse? AWT, Swing, JavaFX & SWT 2
T Tray-Icon-Menü unter Linux AWT, Swing, JavaFX & SWT 10
J Context Menü Maus AWT, Swing, JavaFX & SWT 3
welterde Menü in der Titelleiste des JInternalFrame AWT, Swing, JavaFX & SWT 4
T Popup-Menü unter Linux AWT, Swing, JavaFX & SWT 2
G Swing Menü Hauptfenster AWT, Swing, JavaFX & SWT 14
K Menü mit ALT-D öffnen AWT, Swing, JavaFX & SWT 13
M Ereignis: Menü offen? AWT, Swing, JavaFX & SWT 2
J Icons mit Text als Menü AWT, Swing, JavaFX & SWT 2
G Problem mit Kontextmenu(Popup Menü) AWT, Swing, JavaFX & SWT 3
G Menü hervorheben, wenn Item ausgewählt ist? AWT, Swing, JavaFX & SWT 2
B Menü-Bedienung mit Keys unter AWT! AWT, Swing, JavaFX & SWT 3
J Drop-down menü in Toolbar Button AWT, Swing, JavaFX & SWT 8
G Rechte Maustaste soll Menü aufrufen AWT, Swing, JavaFX & SWT 11
G Problem mit Menü/Button auf Hintergrundbild AWT, Swing, JavaFX & SWT 10
G Datei per Menü laden und und in JTextArea darstellen AWT, Swing, JavaFX & SWT 4
A Fenster über Menü schließen AWT, Swing, JavaFX & SWT 2
G Menü oder Layout? AWT, Swing, JavaFX & SWT 2
P Menü soll sich nur nach links aufbauen... AWT, Swing, JavaFX & SWT 7
I Swing: Menü verschwindet beim Einfügen eines Bildes AWT, Swing, JavaFX & SWT 15
J JTextField immer über Menü der JComboBox gezeichnet AWT, Swing, JavaFX & SWT 2
G menü AWT, Swing, JavaFX & SWT 9
C ActionListener für dynamisches Menü AWT, Swing, JavaFX & SWT 8
G Wie kann man ein Kontext-Menü erstellen? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben