Uhrzeiten eingefügt und rotes Highliting des aktuellen Tages und der Aktuellen Stunde hinzugefügt.

Zum Testen muss die Systemzeit ggf. geändert werden.
This commit is contained in:
2021-10-26 11:57:27 +02:00
parent d2a920b9fc
commit 073a25335f
2 changed files with 74 additions and 22 deletions

View File

@@ -1,5 +1,6 @@
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.text.ParseException;
import java.util.Arrays; import java.util.Arrays;
public class Stundenplan implements SelectionListener { public class Stundenplan implements SelectionListener {
@@ -9,7 +10,7 @@ public class Stundenplan implements SelectionListener {
* *
* @param args * @param args
*/ */
public static void main(String[] args) { public static void main(String[] args) throws ParseException {
// Setzen des "Look & Feel" des Programms // Setzen des "Look & Feel" des Programms
try { try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
@@ -29,7 +30,7 @@ public class Stundenplan implements SelectionListener {
/** /**
* Konstruktor des Hauptprogramms * Konstruktor des Hauptprogramms
*/ */
public Stundenplan() { public Stundenplan() throws ParseException {
// Erstellen des GUIs // Erstellen des GUIs
gui = new StundenplanGUI(); gui = new StundenplanGUI();
@@ -81,7 +82,7 @@ public class Stundenplan implements SelectionListener {
// Neue Daten aus der Datenbank abfragen. // Neue Daten aus der Datenbank abfragen.
// Hier gefakte Daten, die Struktur der Datenbank ist nicht vorgegeben. // Hier gefakte Daten, die Struktur der Datenbank ist nicht vorgegeben.
//dbc.executeStatement("SELECT 0,'Q2','405',kuerzel,0,0,'Informatik',-16711936 FROM lehrer WHERE kuerzel = '" + pNewValue + "'"); //dbc.executeStatement("SELECT 0,'Q2','405',kuerzel,0,0,'Informatik',-16711936 FROM lehrer WHERE kuerzel = '" + pNewValue + "'");
dbc.executeStatement("SELECT blocknummer, raum, name, wochentag, kuerzel, Fach FROM Stunden JOIN klassen ON Stunden.klassen_id = klassen.id JOIN unterrichtet ON unterrichtet.Stundenid = Stunden.id WHERE kuerzel = \""+pNewValue+"\""); dbc.executeStatement("SELECT blocknummer, raum, name, wochentag, kuerzel, Fach, stundenbeginn, stundendende FROM Stunden JOIN klassen ON Stunden.klassen_id = klassen.id JOIN unterrichtet ON unterrichtet.Stundenid = Stunden.id JOIN tagesblocks ON blocknr = blocknummer WHERE kuerzel = \""+pNewValue+"\"");
QueryResult r = dbc.getCurrentQueryResult(); QueryResult r = dbc.getCurrentQueryResult();
// Falls es ein Ergebnis gibt ... // Falls es ein Ergebnis gibt ...
if (r != null) { if (r != null) {
@@ -89,14 +90,13 @@ public class Stundenplan implements SelectionListener {
// Neue Stunden in die GUI schreiben // Neue Stunden in die GUI schreiben
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
System.out.println("a");
int wochentag = getWochentag(r,i); int wochentag = getWochentag(r,i);
gui.addLesson( gui.addLesson(
wochentag, // Spalte im Plan (0=Montag, ... ,4=Freitag) wochentag, // Spalte im Plan (0=Montag, ... ,4=Freitag)
Integer.parseInt(data[i][0])-1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde) Integer.parseInt(data[i][0])-1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
data[i][5], // Titel data[i][5], // Titel
"Raum " + data[i][1], // Untertitel "Raum " + data[i][1] + " | " + data[i][6] + " - " + data[i][7], // Untertitel
data[i][4], // Beschreibungstext data[i][4], // Beschreibungstext
data[i][3], // Fußzeile data[i][3], // Fußzeile
new Color(colors(data,i)) // Farbe (Objekt der Klasse Color) new Color(colors(data,i)) // Farbe (Objekt der Klasse Color)
@@ -109,14 +109,13 @@ public class Stundenplan implements SelectionListener {
} }
} }
if (pList == "Klasse"){ if (pList == "Klasse"){
dbc.executeStatement("SELECT blocknummer, raum, name, wochentag, kuerzel, Fach FROM Stunden JOIN klassen ON Stunden.klassen_id = klassen.id JOIN unterrichtet ON unterrichtet.Stundenid = Stunden.id WHERE name = \""+pNewValue+"\""); dbc.executeStatement("SELECT blocknummer, raum, name, wochentag, kuerzel, Fach, stundenbeginn, stundendende FROM Stunden JOIN klassen ON Stunden.klassen_id = klassen.id JOIN unterrichtet ON unterrichtet.Stundenid = Stunden.id JOIN tagesblocks ON blocknr = blocknummer WHERE name = \""+pNewValue+"\"");
QueryResult r = dbc.getCurrentQueryResult(); QueryResult r = dbc.getCurrentQueryResult();
if (r != null) { if (r != null) {
String[][] data = r.getData(); String[][] data = r.getData();
// Neue Stunden in die GUI schreiben // Neue Stunden in die GUI schreiben
for (int i = 0; i < data.length; i++) { for (int i = 0; i < data.length; i++) {
System.out.println(Arrays.toString(r.getData()[i]));
int wochentag = getWochentag(r,i); int wochentag = getWochentag(r,i);
gui.addLesson( gui.addLesson(
@@ -124,7 +123,7 @@ public class Stundenplan implements SelectionListener {
Integer.parseInt(data[i][0])-1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde) Integer.parseInt(data[i][0])-1, // Zeile im Plan (0=1. Stunde, ... ,9=10. Stunde)
//Integer.parseInt(t.getData()[i][0])-1, //Integer.parseInt(t.getData()[i][0])-1,
data[i][5], // Titel data[i][5], // Titel
"Raum " + data[i][1], // Untertitel "Raum " + data[i][1] + " | " + data[i][6] + " - " + data[i][7], // Untertitel
data[i][4], // Beschreibungstext data[i][4], // Beschreibungstext
data[i][2], // Fußzeile data[i][2], // Fußzeile
new Color(colors(data,i)) // Farbe (Objekt der Klasse Color) new Color(colors(data,i)) // Farbe (Objekt der Klasse Color)

View File

@@ -1,13 +1,13 @@
import javax.swing.*; import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.LineBorder; import javax.swing.border.LineBorder;
import java.awt.*; import java.awt.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.sql.SQLOutput;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.*;
import java.util.GregorianCalendar;
import java.util.Hashtable;
import java.util.Date;
/** /**
* GUI für das Stundenplanprogramm. * GUI für das Stundenplanprogramm.
@@ -216,10 +216,6 @@ public class StundenplanGUI extends JFrame implements ActionListener {
jpPlan.setLayout(new GridBagLayout()); jpPlan.setLayout(new GridBagLayout());
jpPlan.add(new JPanel()); jpPlan.add(new JPanel());
DatabaseConnector dbc = new DatabaseConnector("", 0, "stundenplan.db", "", "");
dbc.executeStatement("SELECT datum FROM Tage");
QueryResult r = dbc.getCurrentQueryResult();
//Datum //Datum
GregorianCalendar [] tage = new GregorianCalendar[7]; GregorianCalendar [] tage = new GregorianCalendar[7];
GregorianCalendar g = new GregorianCalendar(); GregorianCalendar g = new GregorianCalendar();
@@ -228,6 +224,8 @@ public class StundenplanGUI extends JFrame implements ActionListener {
SimpleDateFormat datum = new SimpleDateFormat("dd.MM.yyyy"); SimpleDateFormat datum = new SimpleDateFormat("dd.MM.yyyy");
SimpleDateFormat tag = new SimpleDateFormat("dd"); SimpleDateFormat tag = new SimpleDateFormat("dd");
SimpleDateFormat wochentag = new SimpleDateFormat("EEEEEEEEEEEE"); SimpleDateFormat wochentag = new SimpleDateFormat("EEEEEEEEEEEE");
SimpleDateFormat uhrzeit = new SimpleDateFormat("HH:mm:ss");
String heute = wochentag.format(d);
System.out.println("current Date: " + datum.format(d)); System.out.println("current Date: " + datum.format(d));
System.out.println("current Day: " + wochentag.format(d)); System.out.println("current Day: " + wochentag.format(d));
/* /*
@@ -246,15 +244,36 @@ public class StundenplanGUI extends JFrame implements ActionListener {
c.fill = GridBagConstraints.NONE; c.fill = GridBagConstraints.NONE;
c.weightx = 0.5; c.weightx = 0.5;
c.weighty = 0.2; c.weighty = 0.2;
jpPlan.add(makeLabel("Montag "/*+r.getData()[0][0]*/, fHeader), c); Color color = new Color(0xf24e5e);
JLabel mo = makeLabel("Montag ", fHeader);
if(heute.equals("Montag")) {
mo.setForeground(color);
}
jpPlan.add(mo, c);
c.gridx++; c.gridx++;
jpPlan.add(makeLabel("Dienstag "/*+r.getData()[1][0]*/, fHeader), c); JLabel di = makeLabel("Dienstag ", fHeader);
if(heute.equals("Dienstag")) {
di.setForeground(color);
}
jpPlan.add(di, c);
c.gridx++; c.gridx++;
jpPlan.add(makeLabel("Mittwoch "/*+r.getData()[2][0]*/, fHeader), c); JLabel mi = makeLabel("Mittwoch ", fHeader);
if(heute.equals("Mittwoch")) {
mi.setForeground(color);
}
jpPlan.add(mi, c);
c.gridx++; c.gridx++;
jpPlan.add(makeLabel("Donnerstag "/*+r.getData()[3][0]*/, fHeader), c); JLabel don = makeLabel("Donnerstag ", fHeader);
if(heute.equals("Donnerstag")) {
don.setForeground(color);
}
jpPlan.add(don, c);
c.gridx++; c.gridx++;
jpPlan.add(makeLabel("Freitag "/*+r.getData()[4][0]*/, fHeader), c); JLabel fr = makeLabel("Freitag ", fHeader);
if(heute.equals("Freitag")) {
fr.setForeground(color);
}
jpPlan.add(fr, c);
// Überschriften für die Zeilen (Stunden) // Überschriften für die Zeilen (Stunden)
c = new GridBagConstraints(); c = new GridBagConstraints();
@@ -262,10 +281,31 @@ public class StundenplanGUI extends JFrame implements ActionListener {
c.fill = GridBagConstraints.NONE; c.fill = GridBagConstraints.NONE;
c.weightx = 0.2; c.weightx = 0.2;
c.weighty = 0.5; c.weighty = 0.5;
// Code um den Tag und die Aktuelle Stunde rot hervorzuheben
String[][] blocks = getTagesblocks();
GregorianCalendar beginn = new GregorianCalendar();
GregorianCalendar ende = new GregorianCalendar();
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
beginn.set(beginn.HOUR_OF_DAY,Integer.parseInt(blocks[i][1].substring(0,2)));
beginn.set(beginn.MINUTE,Integer.parseInt(blocks[i][1].substring(3,5)));
ende.set(beginn.HOUR_OF_DAY,Integer.parseInt(blocks[i][2].substring(0,2)));
ende.set(beginn.MINUTE,Integer.parseInt(blocks[i][2].substring(3,5)));
c.gridy = i + 1; c.gridy = i + 1;
if(g.after(beginn) && g.before(ende)) {
JLabel current = makeLabel((i + 1) + ". Stunde", fHeader);
current.setForeground(color);
jpPlan.add(current, c);
} else {
jpPlan.add(makeLabel((i + 1) + ". Stunde", fHeader), c); jpPlan.add(makeLabel((i + 1) + ". Stunde", fHeader), c);
} }
}
} }
/** /**
@@ -277,6 +317,19 @@ public class StundenplanGUI extends JFrame implements ActionListener {
return makeLabel(pLabel, fText); return makeLabel(pLabel, fText);
} }
/**
* Gibt die Tabelle Tagesblocks aus
* @return
*/
private String[][] getTagesblocks(){
DatabaseConnector dbc = new DatabaseConnector("", 0, "stundenplan.db", "", "");
dbc.executeStatement("SELECT * FROM tagesblocks");
QueryResult r = dbc.getCurrentQueryResult();
System.out.println(r);
if(r == null) return new String[0][0];
return r.getData();
}
/** /**
* Erzeugt ein Text-Label mit der angegebenen Schrift und dem Text. * Erzeugt ein Text-Label mit der angegebenen Schrift und dem Text.
* @param pLabel * @param pLabel