# DateComboBox in JTable



## MSJones (1. Aug 2011)

Hallo.
Mal wieder ein kleines Problem, mit dem ich scheinbar nicht alleine zurecht komme.

Ich möchte die Klasse "com.pallas.swing.date.DateComboBox" in einer JTable als Defaulteditor einsetzen.

Das Datumfeld öffnet sich auch irgendwann, wenn ich hartnäckig und oft genug draufklicke, aber wenn ich dann einen Wert auswähle, wird dieser nicht in das betreffende Feld der JTable übernommen.

Wenn ich die DateComboBox ohne Table direkt auf einen Frame setze, funktioniert das und ich bekomm das gewählte Datum zurückgeliefert. Nur in der Tabelle bleibt das Feld eben leer.

Dacht ich mir, vielleicht benutzt die JTable beim Abschluß der Auswahl ein getSelectedItem um dieses dann darzustellen, da DateCombobox von JComboBox erbt.
Hab also die Methode überschrieben und einfach mal nen String "Hallo Welt" zurückgegeben.
Schon stand da immer Hallo Welt drin.

Eigentlich klar.
Dacht ich mir, schreibste da einfach nen String mit dem getDate rein, das wird dann schon passen.
Leider bekomm ich dann nur noch nen Stackoverflow.

Was mach ich falsch, bzw. was muß ich wie anders machen, damit es funktioniert?
Hatte das Problem schon mal jemand und hat es gelöst bekommen?

Existieren vielleicht bessere Lösungen als die Lib von pallas (Rob MacGrogan), mit denen schon jemand Erfahrung hat?

Danke schonmal für eure Hilfe.

PS: Kann morgen auch mal ein Bielspielquelltext liefern, klick ich heut abend zusammen, denn der Originalquelltext ist doch zu umfangreich.


----------



## Ariol (1. Aug 2011)

Zeig doch mal dein TableModel.

Das DefaultTableModel verwendet die Methode 
	
	
	
	





```
toString
```
 der übergebenen Komponenten.


----------



## turtle (1. Aug 2011)

Ich nehmen öfter den JXDatePicker aus den SwingLabs Java™ Desktop Technology


----------



## MSJones (2. Aug 2011)

Ariol hat gesagt.:


> Zeig doch mal dein TableModel.
> 
> Das DefaultTableModel verwendet die Methode
> 
> ...


Heißt das, ich muß statt getSelectedItem die Methode toString überschreiben, damit es funktioniert?



turtle hat gesagt.:


> Ich nehmen öfter den JXDatePicker aus den SwingLabs Java™ Desktop Technology


OK, danke, werd ich mir mal anschauen, ob das besser funktioniert.


Und hier noch meine Beispielklasse:

```
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.text.SimpleDateFormat;

import javax.swing.DefaultCellEditor;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import com.pallas.swing.date.DateComboBox;


public class TableFrame extends JFrame
{
	// Konstanten:
	private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
	
	// Attribute
	
	
	public TableFrame()
	{
		super("TestTabelle");
		setLayout(new BorderLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JTable table = new JTable(new MyTableModel(5,5), new MyTableColumnModel());
		table.createDefaultColumnsFromModel();
		getContentPane().add(table, BorderLayout.CENTER);
		
		setPreferredSize(new Dimension(800, 600));
		pack();
		setVisible(true);
	}
	
	public static void main(String[] args)
	{
		TableFrame tf = new TableFrame();
	}

	
	class MyTableModel extends DefaultTableModel
	{
		MyTableModel(int rows, int columns)
		{
			super(rows, columns);
		}
	}
	
	class MyTableColumnModel extends DefaultTableColumnModel
	{
		public void addColumn(TableColumn aColumn)
		{
			super.addColumn(aColumn);

			DateComboBox comboBox = new DateComboBox();
			comboBox.setDateFormat(dateFormatter);
			
			aColumn.setCellEditor(new DefaultCellEditor(comboBox));
		}
	}
}
```


----------



## nieselfriem (2. Aug 2011)

Hi!
Ich stand vor dem gleichen Problem.
Verwende den untersten Link vom Forumsbeitrag von Slater. Das ist eine super Sammlung von Komponenten mit einer Implementierung für die Tabelle.
http://www.java-forum.org/awt-swing-swt/118343-eingabe-datum-jtable.html

Gruß niesel


----------

