tobitobsen82
Grünschnabel
Hallo Leute,
habe folgende Programmstruktur
3 Klassen:
FensterElemente -> Methoden zum Erstellen von Buttons, etc.
Menu -> Menuleiste wird erstellt
Fenster -> eigentliches Fenster wird per Konstruktor erstellt, Buttons usw geaddet, ActionHandling befindet sich auch darin
Mein Problem:
1. Wie kann ich von meiner inneren ActionPerformed Klasse auf die Menu-Klasse zugreifen, um an den Listener eines jeden Menüpunkts ranzukommen?
2. Was mache ich bei meiner ActionPerformed falsch, sodass das instanzieren eines FileDialogs fehlschlägt? (mit dem ersten Paramater - derzeit this - kann er nichts anfangen. Ich schätze mal da muss das Fenster rein, weiß aber nicht wie...)
Danke für eure Hilfe.
Nachfolgend die beiden Klassen Fenster und Menu. In Menu habe ich erstmal nur mit einem Menupunkt angefangen (oeffnen). Der Rest muss da noch entsprechend angepasst werden.
Fenster.java:
Menu.java:
habe folgende Programmstruktur
3 Klassen:
FensterElemente -> Methoden zum Erstellen von Buttons, etc.
Menu -> Menuleiste wird erstellt
Fenster -> eigentliches Fenster wird per Konstruktor erstellt, Buttons usw geaddet, ActionHandling befindet sich auch darin
Mein Problem:
1. Wie kann ich von meiner inneren ActionPerformed Klasse auf die Menu-Klasse zugreifen, um an den Listener eines jeden Menüpunkts ranzukommen?
2. Was mache ich bei meiner ActionPerformed falsch, sodass das instanzieren eines FileDialogs fehlschlägt? (mit dem ersten Paramater - derzeit this - kann er nichts anfangen. Ich schätze mal da muss das Fenster rein, weiß aber nicht wie...)
Danke für eure Hilfe.
Nachfolgend die beiden Klassen Fenster und Menu. In Menu habe ich erstmal nur mit einem Menupunkt angefangen (oeffnen). Der Rest muss da noch entsprechend angepasst werden.
Fenster.java:
Code:
package listener;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.plaf.basic.BasicOptionPaneUI.ButtonActionListener;
import javax.swing.text.JTextComponent;
public class Fenster{
/**
* Dateiname: Fenster.java
* Compiler: Eclipse SDK 3.2.1
* Autor: Tobias Fickinger
* Erstellungsdatum: 17.04.07
* Letzte Änderung: 23.04.07
* Beschreibung des Moduls: Hauptprogramm zur Anzeige eines simplen Fensters ohne Ereignisse. Methoden werden größtenteils aus der Klasse FensterElemente bezogen
* Paket: fenster (zusammen mit: FensterElemente.java)
*/
public static void main(String[] args) {
// Instanzierung des Fensterobjekts
ReservierungsFenster fensterobjekt = new ReservierungsFenster();
// Sichtbarkeit festlegen
Menu menu = new Menu();
fensterobjekt.setJMenuBar(menu.setMenuBar());
fensterobjekt.setVisible(true);
}
}
class ReservierungsFenster extends JFrame{
private static final long serialVersionUID = 1L;
public JTextField nameField;
public JTextField emailField;
public JButton buttonOK;
// Konstruktoren
public ReservierungsFenster(){
// Konstruktoraufruf mit Parameter für Titelname des Fensters
this("Platzreservierung");
}
public ReservierungsFenster( String titel ){
super(titel);
setSize(420,400);
//Elemente holen
FensterElemente element = new FensterElemente();
// Gridbaglayout holen
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints constr = new GridBagConstraints();
// ContentPane holen
Container cpane = this.getContentPane();
cpane.setLayout (new BorderLayout());
// Panels holen und mit GridBagLayout versehen
JPanel topPanel = new JPanel();
JPanel downPanel = new JPanel ();
topPanel.setLayout(gbl);
downPanel.setLayout(gbl);
// Panel "oben" mit Elementen aus der Klasse FensterElemente füllen
//JLabel erstellen
constr.gridx = 1; //Spalte
constr.gridy = 0; //Zeile
constr.anchor = GridBagConstraints.CENTER;
topPanel.add(element.createJLabel("Sitzplatzreservierung"), constr);
//JLabel erstellen
constr.gridx = 0;
constr.gridy = 1;
constr.anchor = GridBagConstraints.EAST;
topPanel.add(element.createJLabel("Name"), constr);
//TextField erstellen
constr.gridx = 1;
constr.gridy = 1;
constr.anchor = GridBagConstraints.EAST;
nameField = element.createTextField(20);
topPanel.add(nameField, constr);
//JLabel erstellen
constr.gridx = 0;
constr.gridy = 2;
constr.anchor = GridBagConstraints.EAST;
topPanel.add(element.createJLabel("Email"), constr);
//TextField erstellen
constr.gridx = 1;
constr.gridy = 2;
constr.anchor = GridBagConstraints.EAST;
emailField = element.createTextField(20);
topPanel.add(emailField, constr);
//Button erstellen
constr.gridx = 2;
constr.gridy = 3;
constr.anchor = GridBagConstraints.WEST;
buttonOK = element.createButton("OK");
topPanel.add(buttonOK, constr);
EventHandling bl = new EventHandling();
buttonOK.addActionListener(bl);
//TextArea erstellen
constr.gridx = 1;
constr.gridy = 4;
constr.anchor = GridBagConstraints.CENTER;
topPanel.add(element.createTextArea(3,19), constr);
//Panel "unten" mit Elementen aus der Klasse FensterElemente füllen
//RadioButtons erstellen
constr.gridx = 0;
constr.gridy = 1;
constr.anchor = GridBagConstraints.WEST;
String[] title = new String[]{"Raucher", "Nichtraucher"};
boolean[] active = new boolean[]{ true, false};
downPanel.add(element.createRadioButtons(title, active), constr);
//ComboBox erstellen
constr.gridx = 1;
constr.gridy = 1;
constr.anchor = GridBagConstraints.NORTHWEST;
String[] content = new String[]{"Fensterplatz","Mittelgang","Loge","Schlafplatz"};
downPanel.add(element.createComboBox(content), constr);
//Leeres JLabel erstellen
constr.gridx = 2;
constr.gridy = 1;
constr.anchor = GridBagConstraints.WEST;
downPanel.add(element.createEmptyJLabel(30), constr);
//Checkboxen erstellen
constr.gridx = 3;
constr.gridy = 1;
constr.anchor = GridBagConstraints.EAST;
constr.gridwidth = GridBagConstraints.REMAINDER;
String[] inhalt = new String[]{"Handgepäck","Koffer"};
boolean[] status = new boolean[]{false,true};
downPanel.add(element.createCheckBox(inhalt,status), constr);
//Leeres JLabel erstellen
constr.gridx = 0;
constr.gridy = 2;
constr.anchor = GridBagConstraints.WEST;
downPanel.add(element.createEmptyJLabel(30), constr);
//Leeres JLabel erstellen
constr.gridx = 0;
constr.gridy = 3;
constr.anchor = GridBagConstraints.WEST;
downPanel.add(element.createEmptyJLabel(30), constr);
//Leeres JLabel erstellen
constr.gridx = 0;
constr.gridy = 4;
constr.anchor = GridBagConstraints.WEST;
downPanel.add(element.createEmptyJLabel(30), constr);
// fertige topPanel und downPanel auf cpane legen
cpane.add(topPanel, BorderLayout.NORTH);
cpane.add(downPanel, BorderLayout.SOUTH);
}
class EventHandling implements ActionListener{
public void actionPerformed(ActionEvent event){
Object source = event.getSource();
/*if(source == buttonOK){
String contentEmailField = emailField.getText();
String contentNameField = nameField.getText();
System.out.println("Name: " + contentNameField +
"\nEmail: " + contentEmailField);
}*/
if(source == buttonOK){
FileDialog dialog = new FileDialog(this, "Datei laden...",FileDialog.LOAD);
dialog.setSize(400, 100);
dialog.show();
}
/*else if(source == ){
}
else if(source == ){
}*/
}
}
}//Ende der Klasse ReservierungsFenster
Menu.java:
Code:
package listener;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JRadioButtonMenuItem;
import listener.ReservierungsFenster.EventHandling;
public class Menu extends JMenuBar{
public Menu(){
}
public JMenuBar setMenuBar(){
ReservierungsFenster rF = new ReservierungsFenster();
// Menüleiste erzeugen
JMenuBar menuBar = new JMenuBar();
JMenu menu1 = new JMenu("Datei");
JMenuItem oeffnen = new JMenuItem("Öffnen");
menu1.add(oeffnen);
EventHandling bl = rF.new EventHandling();
oeffnen.addActionListener(bl);
menu1.add(new JMenuItem("Sichern"));
menu1.add(new JMenuItem("Beenden"));
// Menü zur Menüleiste hinzufügen
menuBar.add(menu1);
JMenu menu2 = new JMenu("look&feel");
menu2.add(new JMenuItem("Windows"));
menu2.add(new JMenuItem("Metal"));
menu2.add(new JMenuItem("Motif"));
// Menü zur Menüleiste hinzufügen
menuBar.add(menu2);
JMenu menu3 = new JMenu("Info");
menu3.add(new JMenuItem("Autor"));
menu3.add(new JMenuItem("Help"));
// Menü zur Menüleiste hinzufügen
menuBar.add(menu3);
// Menüleiste setzen
//getRootPane().setJMenuBar(menuBar);
return menuBar;
}
}