Stundenplan mit GUI

Hallo…

Ich stecke gerade total fest, ich habe hier bereits ein Grundgerüst programmiert. Die ComboBox hinzugefügt, wenn ich das ganze Programm ausführe,
kann ich allerdings keine sehen… Sollte das per ComboBox nicht funktionieren, würde ich auch akzeptieren, wenn man in den Feldern “Fach auswählen”, wenigstens den Text ändern könnte…

Kann mir jemand helfen, bitte??

Hier der wichtigste Teil des Codes:

        public FaecherZeit(){
        super("Stundenplan 2015");
        setSize(new Dimension(900,550));
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new BorderLayout());
        
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);
        
        JMenu mnFile = new JMenu("Datei");
        menuBar.add(mnFile);
        
        JMenuItem mntmExport = new JMenuItem("Als XLS speichern");
        mnFile.add(mntmExport);
        
        JMenuItem mntmReset = new JMenuItem("Reset");
        mnFile.add(mntmReset);
        
        JMenuItem mntmExit = new JMenuItem("Schliessen");
        mnFile.add(mntmExit);
        
        JLabel label = new JLabel("Whatever");
        add(label, BorderLayout.SOUTH);
        
        ListModel lm = new RowHeaderListModel();
        
        JTable table = new JTable(new MyTableModel());
        table.setRowHeight(50);
        
        JList rowHeader = new JList(lm);
        rowHeader.setFixedCellWidth(150);
        rowHeader.setFixedCellHeight(50);
        rowHeader.setCellRenderer(new RowHeaderRenderer(table));
        
        JScrollPane scroll = new JScrollPane(table);
        scroll.setRowHeaderView(rowHeader);
        getContentPane().add(scroll, BorderLayout.CENTER);
    }
    


    public void setUpFaecher(JTable table,TableColumn faecher) {


        
        JComboBox comboBox = new JComboBox();
        comboBox.addItem("Mathematik");
        comboBox.addItem("Deutsch");
        comboBox.addItem("Englisch");
        comboBox.addItem("Französisch");
        comboBox.addItem("Geschichte");
        comboBox.addItem("Geographie");
        comboBox.addItem("Sport");
        
        faecher.setCellEditor(new DefaultCellEditor(comboBox));
        
        DefaultTableCellRenderer renderer =
        new DefaultTableCellRenderer();
        renderer.setToolTipText("Click for combo box");
        faecher.setCellRenderer(renderer);
    }
    
    
    class MyTableModel extends AbstractTableModel {
        private String[] columnNames = {"Montag","Dienstag","Mittwoch","Donnerstag","Freitag"};
        
        private Object[][] data = {
        {"Fach auswählen", "Fach auswählen", "Fach auswählen", "Fach auswählen", "Fach auswählen"},
        {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
        {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
        {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
        {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
        {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
        {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
        {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
        {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"}
        };


        
        public int getColumnCount() {
            return columnNames.length;
        }


        public int getRowCount() {
            return data.length;
        }


        public String getColumnName(int col) {
            return columnNames[col];
        }


        public Object getValueAt(int row, int col) {
            return data[row][col];
        }






        public boolean isCellEditable(int row, int col) {
            if (col > 6) {
                return false;
            } else {
                return true;
            }
        }
    }
}```

Das setUpFacher wurde zumindest im geposteten nirgendwo aufgerufen. Hab’s mal für “Montag” eingefügt, und das geht anscheinend.

Ansonsten kann man die Zellen nach einem Doppelklick bearbeiten, ABER dazu muss im TableModel auch die Methode “setValueAt” implementiert sein (auch mal hier eingefügt)

package bytewelt;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.DefaultCellEditor;
import javax.swing.DefaultListModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListModel;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;

public class FaecherZeit extends JFrame {

    public static void main(String[] args)
    {
        new FaecherZeit().setVisible(true);
    }

    public FaecherZeit(){
        super("Stundenplan 2015");
        setSize(new Dimension(900,550));
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setLocationRelativeTo(null);
        setLayout(new BorderLayout());

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        JMenu mnFile = new JMenu("Datei");
        menuBar.add(mnFile);

        JMenuItem mntmExport = new JMenuItem("Als XLS speichern");
        mnFile.add(mntmExport);

        JMenuItem mntmReset = new JMenuItem("Reset");
        mnFile.add(mntmReset);

        JMenuItem mntmExit = new JMenuItem("Schliessen");
        mnFile.add(mntmExit);

        JLabel label = new JLabel("Whatever");
        add(label, BorderLayout.SOUTH);

        ListModel lm = new DefaultListModel();

        JTable table = new JTable(new MyTableModel());
        table.setRowHeight(50);

        JList rowHeader = new JList(lm);
        rowHeader.setFixedCellWidth(150);
        rowHeader.setFixedCellHeight(50);
        //rowHeader.setCellRenderer(new DefaultListModel(table));

        setUpFaecher(table, table.getColumn("Montag"));

        JScrollPane scroll = new JScrollPane(table);
        scroll.setRowHeaderView(rowHeader);
        getContentPane().add(scroll, BorderLayout.CENTER);
    }



    public void setUpFaecher(JTable table,TableColumn faecher) {



        JComboBox comboBox = new JComboBox();
        comboBox.addItem("Mathematik");
        comboBox.addItem("Deutsch");
        comboBox.addItem("Englisch");
        comboBox.addItem("Französisch");
        comboBox.addItem("Geschichte");
        comboBox.addItem("Geographie");
        comboBox.addItem("Sport");

        faecher.setCellEditor(new DefaultCellEditor(comboBox));

        DefaultTableCellRenderer renderer =
            new DefaultTableCellRenderer();
        renderer.setToolTipText("Click for combo box");
        faecher.setCellRenderer(renderer);
    }


    class MyTableModel extends AbstractTableModel {
        private String[] columnNames = {"Montag","Dienstag","Mittwoch","Donnerstag","Freitag"};

        private Object[][] data = {
            {"Fach auswählen", "Fach auswählen", "Fach auswählen", "Fach auswählen", "Fach auswählen"},
            {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
            {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
            {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
            {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
            {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
            {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
            {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"},
            {"Fach auswählen", "Fach auswählen","Fach auswählen", "Fach auswählen", "Fach auswählen"}
        };



        public int getColumnCount() {
            return columnNames.length;
        }


        public int getRowCount() {
            return data.length;
        }


        public String getColumnName(int col) {
            return columnNames[col];
        }


        public Object getValueAt(int row, int col) {
            return data[row][col];
        }

        @Override
        public void setValueAt(Object aValue, int rowIndex, int columnIndex)
        {
            data[rowIndex][columnIndex] = aValue;
        }




        public boolean isCellEditable(int row, int col) {
            if (col > 6) {
                return false;
            } else {
                return true;
            }
        }
    }
}

Ansonsten gäb’s da noch 1000 Punkte zum Rummeckern und verbessern, aber ist schon spät…

Danke. Habs nun hinbekommen, dass alles per ComboBox auswählbar ist.
Irgendwie ist nur leider nichts mehr schön auf mehrere Klassen verteilt, da ich nie kapiere wie man das Ganze verbindet damit das Gui weiter funktioniert… ������

Vielleicht schreibt jemand noch was dazu, wenn du mal “alles” postest, damit man genauer sieht, worauf sich das bezieht…

vielleicht führst du das weiter aus, aber verbinden + funktionieren klingt für mich erstmal grob nach mvc

…oder MVC :wink:

[OT]jajajaja immer schön eigen werbung hier. :grr:[/OT]

OT
[spoiler][OT]:D[/OT][/spoiler]