//**************** Main *************************/
package listenerprojekt;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
public class Main {
String[][] data = new String[][]{
{"a", "b", "c", "d"},
{"e", "f", "g", "h"},
{"i", "j", "k", "l"}
};
String[] title = new String[]{
"A", "B", "C", "D"
};
private JScrollPane pane;
public Main() {
MyButton but = new MyButton("TestButton");
but.setBackground(Color.RED);
but.setBounds(10, 10, 200, 50);
JFrame frame = new JFrame("Listener- Beispiel");
frame.setBounds(10,10, 300, 700);
frame.setLayout(new BorderLayout());
// hier irgendwo vermute ich meinen Fehler:
JTable table = new JTable(data,title); // tabelle anlegen
MyTableCellEditor tce = new MyTableCellEditor(); // TableCellEditor anlegen
tce.addCellEditorListener(new MyCellEditorListener()); // listener zu TableCellEditor hinzufügen
tce.addMyButtonListener(but);
table.setCellEditor(tce);
pane = new JScrollPane(table);
frame.add(pane, BorderLayout.NORTH);
frame.add(but, BorderLayout.SOUTH);
frame.setVisible(true);
}
public static void main(String[] args) {
new Main();
}
}
//**************** MyTableCellEditor *************************/
package listenerprojekt;
import java.awt.Component;
import java.util.EventObject;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.table.TableCellEditor;
public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor {
MyButtonListener but;
public MyTableCellEditor() {
}
public Object getCellEditorValue() {
return "Methode getCellEditorValue";
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return table;
}
public void addMyButtonListener(MyButtonListener mbl) {
this.but = mbl;
}
}
//**************** MyCellEditorListener *************************/
package listenerprojekt;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
public class MyCellEditorListener implements CellEditorListener {
public MyCellEditorListener() {
super();
}
public void editingStopped(ChangeEvent e) {
System.out.println("Es hat sich was getan in der Methode editingStopped");
}
public void editingCanceled(ChangeEvent e) {
System.out.println("Es hat sich was getan in der Methode editingCanceled");
}
}
//**************** MyButtonListener *************************/
package listenerprojekt;
public interface MyButtonListener {
void changeSize(int width, int height);
void changeText(String text);
void changeLocation(int x, int y);
}
//**************** MyButton *************************/
package listenerprojekt;
import javax.swing.JButton;
public class MyButton extends JButton implements MyButtonListener {
public MyButton(String name) {
super("My" + name);
}
public void changeSize(int width, int height) {
System.out.println("Die Größe muss geändert werden");
}
public void changeText(String text) {
this.setText("Irgendwas");
}
public void changeLocation(int x, int y) {
System.out.println("Die Location muss geändert werden");
}
}