Hallo zusammen
Disclaimer 1: Ich hoffe, ich darf einfach 3 Java-Klassen unten einfügen. Mit der SuFu habe ich schon danach gesucht, aber leider nichts direkt zu einem add mit Objekten wie Events/Veranstaltungen gefunden.
Disclaimer 2: Falls (unten erwähnt) ArrayList nicht geht, sind wir auch für Lösungen mit Array oder anderem dankbar.
Wir wollen einen Raumplaner programmieren .
Folgendes ist bereits vorhanden:
Von der Hauptklasse wird bereits eine Raum- und Veranstaltungsliste erstellt und wir möchten nun pro Raum direkt einer ArrayList die Events für diesen Raum zuweisen.
Die verschiedenen Eingabevariablen sollen in der Klasse Raum in der Methode addEvent ans Ende einer ArrayList pro Raum eingefügt werden.
Hoffentlich verstehen alle, was ich meine...:rtfm::rtfm::rtfm:
Danke vielmals für eure Hilfe!
Disclaimer 1: Ich hoffe, ich darf einfach 3 Java-Klassen unten einfügen. Mit der SuFu habe ich schon danach gesucht, aber leider nichts direkt zu einem add mit Objekten wie Events/Veranstaltungen gefunden.
Disclaimer 2: Falls (unten erwähnt) ArrayList nicht geht, sind wir auch für Lösungen mit Array oder anderem dankbar.
Wir wollen einen Raumplaner programmieren .
Folgendes ist bereits vorhanden:
- Klasse 'Raum' mit einer Raumliste in einer Klasse 'Raumlist' (LinkedList)
- Klasse 'Veranstaltung' mit einer Veranstaltungsliste in einer Klasse 'Veranstaltungslist' (LinkedList)
- Unterklasse 'EingabeFenster', die von Hauptklasse 'Fenster' erbt
Von der Hauptklasse wird bereits eine Raum- und Veranstaltungsliste erstellt und wir möchten nun pro Raum direkt einer ArrayList die Events für diesen Raum zuweisen.
Die verschiedenen Eingabevariablen sollen in der Klasse Raum in der Methode addEvent ans Ende einer ArrayList pro Raum eingefügt werden.
Java:
import java.util.*;
public class Raum {
public static Raumlist raumList = new Raumlist ();
int raumnummer;
int kapazität;
public Raum(int raumnummer, int kapazität) {
this.raumnummer = raumnummer;
this.kapazität = kapazität;
}
public String toString() {
return "Raum (Raumnummer= " + raumnummer + ", Kapazität= " + kapazität+ ")";
}
public int getSize(){
return raumList.size();
}
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + kapazität;
result = prime * result + raumnummer;
return result;
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Raum other = (Raum) obj;
if (kapazität != other.kapazität)
return false;
if (raumnummer != other.raumnummer)
return false;
return true;
}
public static void main(String[] args) {
//List<Raum> raumList = new LinkedList<Raum>();
}
}
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
public class Fenster implements ActionListener {
private JFrame frame;
private JTable table_Raeume;
private JTable table_Veranstaltungen;
private JButton btnZuweisen;
private JButton btnAusgeben;
private JButton btnX;
private Veranstaltung veranstaltungen;
private Raum rList;
private boolean initialized = false;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Fenster window = new Fenster();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Fenster() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame("Programmierprojekt: Grp 01");
frame.setBounds(100, 100, 874, 575);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
this.btnZuweisen = new JButton("Veranstaltung zuweisen");
btnZuweisen.setBounds(23, 240, 213, 30);
btnZuweisen.addActionListener(this);
frame.getContentPane().add(btnZuweisen);
this.btnAusgeben = new JButton("Raumbelegung ausgeben");
btnAusgeben.setBounds(641, 240, 194, 30);
btnAusgeben.addActionListener( this );
frame.getContentPane().add(btnAusgeben);
JTextPane textPane_Logs = new JTextPane();
textPane_Logs.setBounds(23, 328, 812, 197);
frame.getContentPane().add(textPane_Logs);
if(Raum.raumList.size()<=0){
Raum.raumList.add( new Raum( 100, 20 ) );
Raum.raumList.add( new Raum( 101, 30 ) );
Raum.raumList.add( new Raum( 102, 45 ) );
Raum.raumList.add( new Raum( 200, 80 ) );
Raum.raumList.add( new Raum( 300, 90 ) );
}
DefaultTableModel modelRaum = new DefaultTableModel();
this.table_Raeume = new JTable(modelRaum) {
public boolean isCellEditable(int row, int col)
{
return false;
}};
modelRaum.addColumn("Raumnummer");
modelRaum.addColumn("Kapazität");
for (int i = 0; i < Raum.raumList.size(); i++) {
modelRaum.addRow(new Object[]{
Raum.raumList.get(i).raumnummer,
Raum.raumList.get(i).kapazität
});
}
JScrollPane spTable2 = new JScrollPane(this.table_Raeume);
spTable2.setBounds(434, 35, 403, 194);
frame.getContentPane().add(spTable2);
if(veranstaltungen.vList.size()<=0){
veranstaltungen.vList.add( new Veranstaltung("DMDB","Datenmodellierung und Datenbanken","WI-2o",48,25));
veranstaltungen.vList.add( new Veranstaltung("PRM","Projektmanagement","WI-2o",48,25));
veranstaltungen.vList.add( new Veranstaltung("PRG2","Programmieren 2","WI-2o",56,32));
veranstaltungen.vList.add( new Veranstaltung("BEWI","Business Englich","WI-2o",48,32));
veranstaltungen.vList.add( new Veranstaltung("MWI","Mathematik","WI-2o",56,32));
}
DefaultTableModel model = new DefaultTableModel();
this.table_Veranstaltungen = new JTable(model){
public boolean isCellEditable(int row, int col)
{
return false;
}};
model.addColumn("Name");
model.addColumn("Kürzel");
model.addColumn("Kursbezeichnung");
model.addColumn("Stunden");
model.addColumn("Kapazität");
JScrollPane spTable = new JScrollPane(this.table_Veranstaltungen);
this.table_Veranstaltungen.setColumnSelectionAllowed(false);
spTable.setBounds(23, 35, 401, 194);
for (int i = 0; i < veranstaltungen.vList.size(); i++) {
model.addRow(new Object[]{
veranstaltungen.vList.get(i).langebezeichnung,
veranstaltungen.vList.get(i).kurzbezeichnung,
veranstaltungen.vList.get(i).Kursbezeichnung,
veranstaltungen.vList.get(i).Gesamt_Stundenumfang,
veranstaltungen.vList.get(i).benötige_Kapazität
});
}
frame.getContentPane().add(spTable);
JLabel lblVeranstaltungen = new JLabel("Veranstaltungen");
lblVeranstaltungen.setFont(new Font("Calibri", Font.BOLD, 16));
lblVeranstaltungen.setBounds(23, 14, 187, 20);
frame.getContentPane().add(lblVeranstaltungen);
JLabel lblRaeume = new JLabel("R\u00E4ume");
lblRaeume.setFont(new Font("Calibri", Font.BOLD, 16));
lblRaeume.setBounds(434, 14, 187, 20);
frame.getContentPane().add(lblRaeume);
JLabel lblLogs = new JLabel("Logs");
lblLogs.setFont(new Font("Calibri", Font.BOLD, 16));
lblLogs.setBounds(23, 306, 187, 20);
frame.getContentPane().add(lblLogs);
this.btnX = new JButton("Veranstaltung entfernen");
btnX.addActionListener(this);
btnX.setBounds(434, 240, 197, 30);
frame.getContentPane().add(btnX);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnZuweisen){
int selectedRow = this.table_Veranstaltungen.getSelectedRow();
//System.out.println(this.veranstaltungen.vList.get(selectedRow).langebezeichnung);
if (selectedRow>=0){
Raum Raum = null;
EingabeFenster Eingabe = new EingabeFenster(2);
//System.out.println(Raum.raumList.size());
}
}
if(e.getSource() == btnAusgeben){
System.out.println("Alle Raumbelegungen ausgeben");
}
if(e.getSource() == btnX){
System.out.println("Alle Veranstaltungen vom gewählten Raum entfernen");
System.out.println(this.table_Raeume.getSelectedRow());
}
}
}
Java:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.event.*;
import java.util.Date;
public class EingabeFenster extends Fenster {
JLabel label;
public EingabeFenster(){
}
public EingabeFenster(int selectedRow){
Runnable r = new Runnable () {
private Raumlist rList;
private Veranstaltung veranstaltungen;
private Veranstaltungslist eVlist;
public void run() {
this.rList = Raum.raumList;
this.eVlist = Veranstaltung.vList;
System.out.println(eVlist);
JPanel buttons = new JPanel(new
FlowLayout(FlowLayout.CENTER, 5, 5));
JPanel nested1 = new JPanel(); // FlowLayout
JLabel titleRaumauswahl = new JLabel("Raumauswahl: ");
titleRaumauswahl.setFont(new Font("Calibri", Font.PLAIN, 16));
DefaultComboBoxModel comboModel = new DefaultComboBoxModel();
JComboBox comboBoxRaum = new JComboBox(comboModel);
for (int i = 0; i < Raum.raumList.size(); i++) {
comboModel.addElement(Raum.raumList.get(i).raumnummer);
}
System.out.println(Raum.raumList.size());
//comboModel.addElement(arg0);
nested1.add(titleRaumauswahl);
nested1.add(comboBoxRaum);
JPanel nested2 = new JPanel(); // FlowLayout
JLabel titleStartDate = new JLabel("Datum: ");
titleStartDate.setFont(new Font("Calibri", Font.PLAIN, 16));
JTextField dateStart = new JTextField ("");
dateStart.setColumns(10);
nested2.add(titleStartDate);
nested2.add(dateStart);
JPanel nested3 = new JPanel(); // FlowLayout
JLabel titleEndDate = new JLabel("Zeit: ");
titleEndDate.setFont(new Font("Calibri", Font.PLAIN, 16));
JComboBox timeStartHour = new JComboBox();
timeStartHour.setModel(new DefaultComboBoxModel(new String[] {"06", "07","08","09","10","11","12","13","14","15","16","17","18","19"}));
JComboBox timeStartMin = new JComboBox();
timeStartMin.setModel(new DefaultComboBoxModel(new String[] {"00", "30"}));
JLabel seperator = new JLabel(" - ");
seperator.setFont(new Font("Calibri", Font.PLAIN, 16));
JComboBox timeEndHour = new JComboBox();
timeEndHour.setModel(new DefaultComboBoxModel(new String[] {"06", "07","08","09","10","11","12","13","14","15","16","17","18","19","20"}));
JComboBox timeEndMin = new JComboBox();
timeEndMin.setModel(new DefaultComboBoxModel(new String[] {"00", "30"}));
nested3.add(titleEndDate);
nested3.add(timeStartHour);
nested3.add(timeStartMin);
nested3.add(seperator);
nested3.add(timeEndHour);
nested3.add(timeEndMin);
JPanel outer = new JPanel(new BorderLayout());
outer.add(nested1, BorderLayout.NORTH);
outer.add(nested2, BorderLayout.CENTER);
outer.add(nested3, BorderLayout.SOUTH);
JPanel gui = new JPanel(new BorderLayout(5,5));
gui.add(outer, BorderLayout.SOUTH);
final CardLayout cl = new CardLayout();
final JPanel cards = new JPanel(cl);
gui.add(cards);
JLabel infoText = new JLabel("Bitte Raum auswählen um Veranstaltung hinzuzufügen");
cards.add(infoText);
JOptionPane.showMessageDialog(null, gui, " ",1);
System.out.println("Raum: "+comboBoxRaum.getSelectedIndex() + " Datum:"+dateStart.getText()+" Startzeit:"+timeStartHour.getSelectedItem().toString()+"."+timeStartMin.getSelectedItem().toString()+" Ende:"+timeEndHour.getSelectedItem().toString()+"."+timeEndMin.getSelectedItem().toString());
// Werte Veranstaltung:
// Werte Raum
// Vergleiche: Kapazität, Überlappung,
// Zeitdauer, Überbuchung (Zeit schon verplant), nur einmal pro Halbtag
String errorMsg = null;
if (Raum.raumList.get(comboBoxRaum.getSelectedIndex()).kapazität>=100){
errorMsg = "Raumzuweisung ungültig: Ungenügende Kapazität";
}
// Raum.raumList.get(comboBoxRaum.getSelectedIndex()).addEvent("Time",id,"duration",)
if (errorMsg.equals("")){
//beendet und wird eingefügt
}
else {
cards.remove(infoText);
infoText = new JLabel(errorMsg);
cards.add(infoText);
JOptionPane.showMessageDialog(null, gui, " ",0);
}
}
};
SwingUtilities.invokeLater(r);
}
}
Hoffentlich verstehen alle, was ich meine...:rtfm::rtfm::rtfm:
Danke vielmals für eure Hilfe!