Navigation funkt nicht richtig

bvdcomp

Aktives Mitglied
Hallo zusammen

Ich habe folgendes Problem:

Ich habe ein kleines Prog "Pendenzenverwaltung" bei welcher neue Pendenzen eingetragen werden können, oder aktuelle können gelöscht werden.
Nun habe ich es so gemacht, dass man auf einem Button klicken kann, "Pendenz hinzufügen" oder "Pendenz löschen", dann wird die Klasse EventHandler aufgerufen und je nach Button, wird eine zeile aus der Tabele gelöscht oder hinzugefügt.
Java:
public Pendenzenverwaltung() {

		super(new GridLayout(0, 1));

		tabelModel = new MyTableModel();
		
		table = new JTable(tabelModel);
		handl = new EventHandler(table, tabelModel);

		table.setPreferredScrollableViewportSize(new Dimension(600, 100));
		table.setFillsViewportHeight(true);

		JButton addButton = new JButton("Pendenz hinzufügen");
		addButton.addActionListener(handl);

		JButton deleteButton = new JButton("Pendenz löschen");
		deleteButton.addActionListener(handl);

		// Create the scroll pane and add the table to it.
		JScrollPane scrollPane = new JScrollPane(table);

		// Add the scroll pane to this panel.
		add(scrollPane);
		add(addButton);
		add(deleteButton);

	}

Mein Problem:
Ich habe noch eine Menu gebastelt, welche die gleichen Aufgaben wahrnimmt.
Java:
JMenuBar menuBar = new JMenuBar();
		frame.setJMenuBar(menuBar);

		JMenu menu = new JMenu("Menu");
		menuBar.add(menu);

		menu.add(new JSeparator());
		menu.add(new JMenuItem("Pendenz hinzufügen")).addActionListener(handl);
		menu.add(new JSeparator());
		menu.add(new JMenuItem("Pendenz löschen")).addActionListener(handl);
		menu.add(new JSeparator());
		menu.add(new JMenuItem("Beenden")).addActionListener(handl);

		JMenu info = new JMenu("Hilfe");
		info.add(new JSeparator());
		info.add(new JMenuItem("Info")).addActionListener(handl);
		info.add(new JSeparator());
		info.add(new JMenuItem("How to")).addActionListener(handl);

		menuBar.add(info);
Allerding funktioniert es nicht richtig, d.h. ich sehe nur in der Console, das dort steht Pendenz ausführen oder Pendenz löschen.
Es wird keine neue Zeile erstellt, oder die aktuelle gelöscht.

Die Methode actionPerformed in der Klasse EventHandler:
Java:
public void actionPerformed(ActionEvent e) {
			String s = e.getActionCommand();
			if (s.equals("Pendenz hinzufügen")) {
				
				System.out.println("Pendenz ausführen");
				myTableModel.addRow();

			}else if (s.equals("Pendenz löschen")) {
				System.out.println("Pendenz löschen"); 
				int selectedRow = table.getSelectedRow();
				myTableModel.deleteRow(selectedRow);

			}else if (s.equals("Beenden")) {
				System.exit(0);
			}
		}

Wer kann da weiter helfen?

Danke:shock:
 
Ach, meine TabelModel ist doch nicht geheim:
Java:
class MyTableModel extends AbstractTableModel {

		private boolean DEBUG = false;

		private String[] columnNames = { "Fällig am ", "Pendenz ", "Erledigt" };
		private LinkedList<Row> data = new LinkedList<Pendenzenverwaltung.Row>();

		public final Object[] longValues = { new String("11.11.2010"),
				"Beschrieb", Boolean.TRUE };

		public MyTableModel() {
			Row r1 = new Row("Eledigen bis?", "Was steht an? ", false);
			data.add(r1);
		}

		public void deleteRow(int selectedRow) {
			if (selectedRow > data.size() || selectedRow < 0) {
				return;
			}

			data.remove(selectedRow);

			fireTableRowsDeleted(0, data.size());
		}

		public void addRow() {
			Row r1 = new Row(" ", " ", false);
			data.add(r1);

			fireTableRowsUpdated(0, data.size());
		}
...

Ich finde keinen Fehler. Jemand anders sehr wahrscheinlich schon ??
 
Hallo,
Es könnte sein, dass das Model in die anderen beiden Komponenten (Viev und Controller) integriert ist und somit keine korrekte Referenz besitzt, damit die actionPerformed korrekt ausgeführt werden kann.
Wirklich alles sauber gem. MVC trennen und dann sollte es auch funktionieren.

Gruss Marc
 

Neue Themen


Zurück
Oben