Logisches Problem zwischen 2 Klassen

hesk

Erfahrenes Mitglied
Hallo!

Die erste Klasse ist zur Darstellung der Seite gedacht.
In dieser wird eine jTable erzeugt.

Java:
private JTableFilterHeader table;
.
.
.
table = new JTableFilterHeader( data, columnData );

Die JTableFilterHeader-Klasse implementiert ItemListener sodass ich mitbekomme wenn eine ComboBox(welche sich in der JTable befindet) sich ändert. Je nachdem was mit der Checkbox passiert, wird die Table verändert.

Jetzt möchte ich gerne in der ersten Klasse auch mitbekommen, dass die ComboBox sich geändert hat.

Wie macht man das am besten?
 
Zuletzt bearbeitet:
Ich meinte ComboBox. Habs ausgebessert.

In der Table kann man anhand der ComboBoxes filtern.
Unterhalb der Table wird dann angezeigt, wieviele Einträge gerade vorhanden sind.
Also muss die 1. Klasse wissen wann sich die ComboBoxes der Table geändert haben.
 
Die JTable ist eine eigene Klasse, in einem eigenen File.
Dort befindet sich die ComboBox.

Wenn ich jetzt der ComboBox den Listener der ersten Klasse(frame) adde, dann kann ich die JTable-Klasse niergendwo anders verwenden.

Ich möchte sie aber auch in anderen Frames verwenden.

Halbwegs verständlich:)?
 
Die einfachste Möglichkeit ist meiner Meinung nach den Eventcode in der UI-Klasse hinzuzufügen, also:
Java:
class Darstellung implements ActionListener //oder ItemListener****
combobox.addActionListener(this);
Oder hat es eventuell einen speziellen Grund, dass du dafür eine eigene Klasse erstellst?
 
Ja, die gesamte JTable ist eine eigene Klasse. Die JTable enthält ComboBoxes im Header anhand jener gefiltert werden kann.

Das Frame(1. Klasse) erzeugt nun so eine JTable und stellt sie dar. Jetzt müßte ich aber noch im Frame mitbekommen, wann sich die ComboBox in der jtable ändert.

Sowas in der Art "benachrichtige mich wenn der ItemListener der JTable anspring"
 
Habe mir das Prinzip von Observer und Observable durchgelesen. Klingt nach dem was ich suche.

Leider ist meine JTable so definiert:

Java:
public class JTableFilterHeader extends JTable implements ItemListener

Wie kann ich diese nun Observable machen?
 
Hi,

ganz fix eine Idee (evtl gibts da bessere Lösungen), so als Denkanstoß:

Java:
public class Test extends JTable implements ItemListener {
	private MyObservable observable_obj = new MyObservable();

	public void itemStateChanged(ItemEvent e) {
		observable_obj.setChanged();
		observable_obj.notifyObservers(e);
	}
	
	public void addObserver(Observer o) {
		observable_obj.addObserver(o);
	}
	
	public void deleteObserver(Observer o) {
		observable_obj.deleteObserver(o);
	}
}

class MyObservable extends Observable {
  public synchronized void setChanged() {
    super.setChanged();
  }
}
Vorlage / Quelle: java2s.com

Gruß
BK
 
Zuletzt bearbeitet:
Zurück