Aufgabe 3
This commit is contained in:
274
gui/Gui.java
Normal file
274
gui/Gui.java
Normal file
@ -0,0 +1,274 @@
|
||||
/**
|
||||
* Zentrale Klassee für das Erstellen des GUI.
|
||||
*/
|
||||
package gui;
|
||||
|
||||
import javax.swing.JDesktopPane;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JInternalFrame;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuBar;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import personen.Angestellter;
|
||||
import personen.IKlausurSchreiber;
|
||||
import personen.IMitarbeiter;
|
||||
import personen.Lehrbeauftragter;
|
||||
import personen.studenten.DHStudent;
|
||||
import personen.studenten.Student;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.beans.PropertyVetoException;
|
||||
|
||||
/**
|
||||
* Diese Klasse ist die zentrale Klasse zum Erstellen des GUI
|
||||
*
|
||||
* @author konrad
|
||||
*/
|
||||
public class Gui extends JFrame {
|
||||
|
||||
private IMitarbeiter mitarbeiterFeld[];
|
||||
private Lehrbeauftragter lehrbeauftragtenFeld[];
|
||||
private IKlausurSchreiber prueflinge[];
|
||||
private DHStudent dhStudentenFeld[];
|
||||
private Student studentenFeld[];
|
||||
|
||||
private JDesktopPane desktop;
|
||||
private JMenuBar menuBar;
|
||||
|
||||
private AngestellterGui angestellterGui;
|
||||
private StudentGui studentGui;
|
||||
private DHStudentGui dhStudentGui;
|
||||
|
||||
// Instanzen der Klasse InternalFrameHilfsklasseZumOeffnen für jeden Fenstertyp
|
||||
private InternalFrameHilfsklasseZumOeffnen<StudentGui> studentenOpener;
|
||||
private InternalFrameHilfsklasseZumOeffnen<DHStudentGui> dhStudentenOpener;
|
||||
private InternalFrameHilfsklasseZumOeffnen<AngestellterGui> angestelltenOpener;
|
||||
|
||||
/**
|
||||
* Konstruktor.
|
||||
*
|
||||
* @param angestelltenFeld
|
||||
* @param mitarbeiterFeld
|
||||
* @param lehrbeauftragtenFeld
|
||||
* @param prueflinge
|
||||
* @param studentenFeld
|
||||
* @param dhStudentenFeld
|
||||
*/
|
||||
public Gui(
|
||||
Angestellter angestelltenFeld[],
|
||||
IMitarbeiter mitarbeiterFeld[],
|
||||
Lehrbeauftragter lehrbeauftragtenFeld[],
|
||||
IKlausurSchreiber prueflinge[],
|
||||
Student studentenFeld[],
|
||||
DHStudent dhStudentenFeld[]) {
|
||||
// Konstruktor von JFrame mit Fenstertitel
|
||||
super("TINF24CS1");
|
||||
|
||||
this.mitarbeiterFeld = mitarbeiterFeld;
|
||||
this.lehrbeauftragtenFeld = lehrbeauftragtenFeld;
|
||||
this.prueflinge = prueflinge;
|
||||
this.studentenFeld = studentenFeld;
|
||||
this.dhStudentenFeld = dhStudentenFeld;
|
||||
|
||||
// Erstellen des Fensters
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
this.setSize(800, 600);
|
||||
|
||||
// Erstellen der Menüleiste
|
||||
this.menuBar = new JMenuBar();
|
||||
|
||||
// Erstellen des "Datei"-Menüs
|
||||
JMenu fileMenu = new JMenu("Datei");
|
||||
JMenuItem newMenuItem = new JMenuItem("Neu");
|
||||
JMenuItem openMenuItem = new JMenuItem("Öffnen");
|
||||
JMenuItem saveMenuItem = new JMenuItem("Speichern");
|
||||
JMenuItem exitMenuItem = new JMenuItem("Beenden");
|
||||
|
||||
// Hinzufügen der Menüelemente zum "Datei"-Menü
|
||||
fileMenu.add(newMenuItem);
|
||||
fileMenu.add(openMenuItem);
|
||||
fileMenu.add(saveMenuItem);
|
||||
fileMenu.addSeparator();
|
||||
fileMenu.add(exitMenuItem);
|
||||
|
||||
// Erstellen des "Bearbeiten"-Menüs
|
||||
JMenu editMenu = new JMenu("Bearbeiten");
|
||||
JMenuItem cutMenuItem = new JMenuItem("Ausschneiden");
|
||||
JMenuItem copyMenuItem = new JMenuItem("Kopieren");
|
||||
JMenuItem pasteMenuItem = new JMenuItem("Einfügen");
|
||||
|
||||
// Hinzufügen der Menüelemente zum "Bearbeiten"-Menü
|
||||
editMenu.add(cutMenuItem);
|
||||
editMenu.add(copyMenuItem);
|
||||
editMenu.add(pasteMenuItem);
|
||||
|
||||
// Erstellen des "Anzeigen"-Menüs
|
||||
JMenu anzeigeMenu = new JMenu("Anzeigen");
|
||||
JMenuItem angestelltenMenuItem = new JMenuItem("Angestellte");
|
||||
JMenuItem mitarbeiterMenuItem = new JMenuItem("Mitarbeiter");
|
||||
JMenuItem lehrbeauftragterMenuItem = new JMenuItem("Lehrbeauftragte");
|
||||
JMenuItem prueflingeMenuItem = new JMenuItem("Prüflinge");
|
||||
JMenuItem studentenMenuItem = new JMenuItem("Studenten");
|
||||
JMenuItem dhStudentenMenuItem = new JMenuItem("DH-Studenten");
|
||||
|
||||
// Hinzufügen der Menüelemente zum "Anzeigen"-Menü
|
||||
anzeigeMenu.add(angestelltenMenuItem);
|
||||
anzeigeMenu.add(mitarbeiterMenuItem);
|
||||
anzeigeMenu.add(lehrbeauftragterMenuItem);
|
||||
anzeigeMenu.add(prueflingeMenuItem);
|
||||
anzeigeMenu.add(studentenMenuItem);
|
||||
anzeigeMenu.add(dhStudentenMenuItem);
|
||||
|
||||
// Hinzufügen der Menüs zur Menüleiste
|
||||
menuBar.add(fileMenu);
|
||||
menuBar.add(editMenu);
|
||||
menuBar.add(anzeigeMenu);
|
||||
|
||||
// Hinzufügen der Menüleiste zum JFrame
|
||||
this.setJMenuBar(menuBar);
|
||||
|
||||
// Desktop-Fläche für die "JInternalFrame"-Fenster erstellen
|
||||
this.desktop = new JDesktopPane();
|
||||
setContentPane(desktop);
|
||||
|
||||
// Erzeuge die 3 Instanzen der InternalFrameHilfsklasseZumOeffnen
|
||||
|
||||
studentenOpener = new InternalFrameHilfsklasseZumOeffnen<>(desktop, this, () -> {
|
||||
String title = "Studenten (KEINE DH!)";
|
||||
boolean resizable = true;
|
||||
boolean closable = true;
|
||||
boolean maximizable = true;
|
||||
boolean iconifiable = true;
|
||||
StudentGui newStudentGui = new StudentGui(
|
||||
title, resizable, closable, maximizable,
|
||||
iconifiable, studentenFeld, desktop, this);
|
||||
// Referenz in Gui.java aktualisieren
|
||||
this.studentGui = newStudentGui;
|
||||
return newStudentGui;
|
||||
});
|
||||
|
||||
dhStudentenOpener = new InternalFrameHilfsklasseZumOeffnen<>(desktop, this, () -> {
|
||||
String title = "DHBW-Studenten";
|
||||
boolean resizable = true;
|
||||
boolean closable = true;
|
||||
boolean maximizable = true;
|
||||
boolean iconifiable = true;
|
||||
DHStudentGui newDhStudentGui = new DHStudentGui(
|
||||
title, resizable, closable, maximizable,
|
||||
iconifiable, dhStudentenFeld, desktop, this);
|
||||
// Referenz in Gui.java aktualisieren
|
||||
this.dhStudentGui = newDhStudentGui;
|
||||
return newDhStudentGui;
|
||||
});
|
||||
|
||||
angestelltenOpener = new InternalFrameHilfsklasseZumOeffnen<>(desktop, this, () -> {
|
||||
String title = "Angestellte";
|
||||
boolean resizable = true;
|
||||
boolean closable = true;
|
||||
boolean maximizable = true;
|
||||
boolean iconifiable = true;
|
||||
AngestellterGui newAngestellterGui = new AngestellterGui(
|
||||
title, resizable, closable, maximizable,
|
||||
iconifiable, angestelltenFeld, desktop, this);
|
||||
// Referenz in Gui.java aktualisieren
|
||||
this.angestellterGui = newAngestellterGui;
|
||||
return newAngestellterGui;
|
||||
});
|
||||
|
||||
// Hinzufügen der ActionListener zu den Menüelementen
|
||||
exitMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
System.exit(0);
|
||||
}
|
||||
});
|
||||
|
||||
newMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JOptionPane.showMessageDialog(Gui.this, "Neu ausgewählt");
|
||||
}
|
||||
});
|
||||
|
||||
openMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JOptionPane.showMessageDialog(Gui.this, "Öffnen ausgewählt");
|
||||
}
|
||||
});
|
||||
|
||||
saveMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JOptionPane.showMessageDialog(Gui.this, "Speichern ausgewählt");
|
||||
}
|
||||
});
|
||||
|
||||
cutMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JOptionPane.showMessageDialog(Gui.this, "Ausschneiden ausgewählt");
|
||||
}
|
||||
});
|
||||
|
||||
copyMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JOptionPane.showMessageDialog(Gui.this, "Kopieren ausgewählt");
|
||||
}
|
||||
});
|
||||
|
||||
pasteMenuItem.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
JOptionPane.showMessageDialog(Gui.this, "Einfügen ausgewählt");
|
||||
}
|
||||
});
|
||||
|
||||
// Hier ganz kurzer Quelltext dank der Hilfsklassenobjekte!
|
||||
angestelltenMenuItem.addActionListener(angestelltenOpener);
|
||||
|
||||
// Hier ganz kurzer Quelltext dank der Hilfsklassenobjekte!
|
||||
studentenMenuItem.addActionListener(studentenOpener);
|
||||
|
||||
// Hier ganz kurzer Quelltext dank der Hilfsklassenobjekte!
|
||||
dhStudentenMenuItem.addActionListener(dhStudentenOpener);
|
||||
|
||||
// Anzeigen des Fensters
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Dient zum Informieren des Openers.
|
||||
*/
|
||||
public void setStudentGuiToNull() {
|
||||
this.studentGui = null;
|
||||
// Sicherstellen, dass der Opener schon initialisiert ist
|
||||
if (studentenOpener != null) {
|
||||
studentenOpener.clearManagedFrame();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Dient zum Informieren des Openers.
|
||||
*/
|
||||
public void setDhStudentGuiToNull() {
|
||||
this.dhStudentGui = null;
|
||||
if (dhStudentenOpener != null) {
|
||||
dhStudentenOpener.clearManagedFrame();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Dient zum Informieren des Openers.
|
||||
*/
|
||||
public void setAngestelltenGuiToNull() {
|
||||
this.angestellterGui = null;
|
||||
if (angestelltenOpener != null) {
|
||||
angestelltenOpener.clearManagedFrame();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user