![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Benutzer
Registriert seit: 05.07.2004
Beiträge: 95
|
Hi,
ich habe am Anfang folgenden CodeSchnipssel zu präsentieren: Code:
/** Die Menuleiste. */
private MenuBar mb;
/** Die Menupunkte. */
private Menu datei, bearbeiten, filter, hilfe, spiegeln;
/** Die Menuunterpunte. */
private MenuItem beenden, fragez, laden, farbwertveraenderung,
skalieren, graustufen, weichzeichnen, horizontalSpiegeln,
vertikalSpiegeln, speichernUnter, speichern, kontrast;
/** Undo / Redo Menuunterpunte. */
private MenuItem undo, redo;
/**
* Menübar wird erzeugt mit jeweiligen Menü´s und Einträgen.
*/
private void erzeugeMenue() {
// Menüanzeige initialiseren
mb = new MenuBar();
// Menüs initialisieren
datei = new Menu(MENUTITEL_DATEI);
bearbeiten = new Menu(MENUTITEL_BEARBEITEN);
filter = new Menu(MENUTITEL_FILTER);
filter.setEnabled(FILTERMENU);
hilfe = new Menu(MENUTITEL_HILFE);
spiegeln = new Menu(MENU_FILTER_SPIEGELN);
spiegeln.setEnabled(SPIEGELNMENU);
// Menüeinträge initialisieren
laden = new MenuItem(MENU_OEFFNEN);
speichern = new MenuItem(MENU_SPEICHERN);
speichern.setEnabled(BOOL_SPEICHERMENU);
speichernUnter = new MenuItem(MENU_SPEICHERNUNTER);
speichernUnter.setEnabled(BOOL_SPEICHERUNTERMENU);
beenden = new MenuItem(MENU_BEENDEN);
undo = new MenuItem(MENU_UNDO);
undo.setEnabled(BOOL_UNDOMENU);
redo = new MenuItem(MENU_REDO);
redo.setEnabled(BOOL_REDOMENU);
farbwertveraenderung = new MenuItem(MENU_FILTER_FARBWERT);
skalieren = new MenuItem(MENU_FILTER_GROESSE);
graustufen = new MenuItem(MENU_FILTER_GRAUSTUFE);
kontrast = new MenuItem(MENU_FILTER_KONTRAST);
weichzeichnen = new MenuItem(MENU_FILTER_WEICHZEICHNEN);
horizontalSpiegeln = new MenuItem(MENU_FILTER_SPIEGEL_H);
vertikalSpiegeln = new MenuItem(MENU_FILTER_SPIEGEL_V);
fragez = new MenuItem(MENU_HILFE_FRAGEZ);
// Menüeinträge einfügen
datei.add(laden); // Datei->Datei öffnen...
datei.addSeparator(); // Datei->--------
datei.add(speichern); // Datei->Speichern
datei.add(speichernUnter); // Datei->Speichern unter...
datei.addSeparator(); // Datei->--------
datei.add(beenden); // Datei->Beenden
bearbeiten.add(undo);
bearbeiten.add(redo);
filter.add(farbwertveraenderung); // Filter->Farbwerte ändern...
filter.add(skalieren); // Filter->Größe ändern...
filter.add(graustufen); // Filter->Graustufenfilter
filter.add(weichzeichnen); // Filter->Weichzeichnen
filter.add(kontrast); // Filter->Kontrastriere
filter.add(spiegeln); // Filter->Spiegeln
spiegeln.add(vertikalSpiegeln); // Filter->Spiegeln->Horizontal
spiegeln.add(horizontalSpiegeln); // Filter->Spiegeln->Vertikal
hilfe.add(fragez); // Hilfe->?
// Menü(s) in Menübar einfügen
mb.add(datei);
mb.add(bearbeiten);
mb.add(filter);
mb.setHelpMenu(hilfe);
// Menübar in Frame einfügen
setMenuBar(mb);
laden.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Datei laden"); } });
speichern.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Datei speichern"); } });
speichernUnter.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Datei speichern unter"); } });
beenden.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Anwendungbeenden"); } });
undo.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Rueckgaengig"); } });
redo.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Wiederherstellen"); } });
farbwertveraenderung.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Farbwertveränderung"); } });
skalieren.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Skalieren"); } });
graustufen.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Graustufe"); } });
weichzeichnen.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Weichzeichnen"); } });
kontrast.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("Kontrast"); } });
vertikalSpiegeln.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("horizontales Spiegeln"); } });
horizontalSpiegeln.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener("vertikales Spiegeln"); } });
repaint();
}
Code:
final String[] KONST_MENUE_AUFSCHRIFTEN = new String[] {"Datei", "Bearbeiten", "Filter", "Hilfe"};
final String[] KONST_MENUE_EINTRAEGE = new String[] {
"Laden...#-#Speicher#Speichern unter...#-#Beenden",
"R\u00fcckg\u00e4ngig#Wiederherstellen#-#Kopieren#Einfuegen#Ausschneiden", "Farbwertver\u00e4nderung...#Skalieren...#Graustufen#Weichzeichnen#Horizontal spiegeln#Vertikal spiegeln#Kontrast",
"?"};
private void erzeugeMenue() {
// Menüanzeige initialiseren
mb = new MenuBar();
// Menüs initialisieren
liste = KONST_MENUE_AUFSCHRIFTEN;
for(int i=0; i<liste.length - 1; i++) {
Menu eintrag = new Menu(liste[i]);
hilfsliste = KONST_MENUE_EINTRAEGE[i];
liste2 = hilfsliste.split("#");
for(int j=0; j<liste2.length -1; j++) {
if(liste[j].equals("-")) {
eintrag.addSeparator();
} else {
MenuItem menueEintrag = new MenuItem(liste[j]);
eintrag.add(menueEintrag);
}
}
hatMenue[i] = eintrag;
}
this.fuegeActionListenerHinzu();
}
Nun stellt sich mir nur die Frage: 1. wie Spreche ich die MenuItems nun direkt an um sie enabled bzw. disabled setzen zu können. 2. wie kann ich sobald ich sie ansprechen kann diesen langen addActionListener Teil von oben verkürzen? Aufgerufen werden soll IMMER main.bearbeiteEreignis(KONST_EREIGNIS_***MenüEintr agName (zB.***LADEN). Anmerkung noch zum Schluss alle Worte die nur in Großbuchstaben geschrieben sind, sind deklarierte Variablen aus einem Interface auf die zugegriffen werden können.
__________________
|
|
|
|
|
|
Nach oben #2 | |
|
Erfahrener Benutzer
Registriert seit: 29.05.2004
Beiträge: 228
|
Zitat:
Damit kannst du den Listener Teil doch auch recht effizient machen. Also einfach ne for Schleife die alle Menüs durchgeht und dort mit getItem() bis zu getItemCount() und immer mit dem aktuellen Eintrag ein Code:
item.addActionListener(new ActionListener() {
public final void actionPerformed(final ActionEvent e) {
main.menuListener(item.getLabel()); } });
MfG peschmä
__________________
Amazon.de | The Java Trap | Freie Software | Freie Software vs. Open Source | GNU Classpath | GCJ | SableVM "We should forget about small efficiencies, say about 97% of the time: Premature optimization is the root of all evil." - Donald Knuth |
|
|
|
|
|
|
Nach oben #3 |
|
Benutzer
Registriert seit: 05.07.2004
Beiträge: 95
|
habe nun ne Lösung für mein Problem, weiß net ob die so 100% fein ist aber ich poste sie gleich mal hier.
Also erstmal drei ewig lange Zeilen, die großen Wörter darin sind wieder finals die zuvor deklariert wurden. PHP-Code:
PHP-Code:
final int a = i; final int b = j; unüberflüssig machbar ist. |
|
|
|
|
|
Nach oben #4 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.083
|
Heiliger Joseph...
Les mal im Java-Tutorial das Kapitel über Actions durch. Das ist ziehmlich genau das, was du da beschreibst.
__________________
Patrick Gotthardts Weblog. |
|
|
|
|
|
Nach oben #5 |
|
Benutzer
Registriert seit: 05.07.2004
Beiträge: 95
|
hm nu hab ich das ja so gemacht aber die MB wird mir nicht angezeigt ... woran liegt das?
Ich poste hier mal den gesammten Quelltxt der entsprechenden Klasse: PHP-Code:
__________________
|
|
|
|
|
|
Nach oben #6 |
|
Chefkoch-Mod
Registriert seit: 30.05.2004
Beiträge: 433
|
Jau,
in Deiner Initialisierungsmethode fehlt ein Code:
this.setMenuBar(mb)
__________________
Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Vokabeltrainer | asenodin | Allgemeine Java-Programmierung | 9 | 28.05.2006 21:04 |
| Eigene Action Klasse, ähnlich Listener Struktur programmieren? | missiju | Allgemeine Java-Programmierung | 2 | 19.12.2005 12:24 |