Hallo,
gibt es eine möglichkeit ein Datum in einer Spalte einer Tabelle anders als mit der Standart toString Methode auszugeben? (Ich möchte nur ein anderes Darstellungsformat zB. "dd.MM.YYYY")
ich weis nicht wie ich das hinkriege denn ich darf den Spaltentyp nicht veränder, der soll auf DateTime bleiben.
Tabelle:
Tabellen Model:
Editor für text:
und Date Editor:
gibt es eine möglichkeit ein Datum in einer Spalte einer Tabelle anders als mit der Standart toString Methode auszugeben? (Ich möchte nur ein anderes Darstellungsformat zB. "dd.MM.YYYY")
ich weis nicht wie ich das hinkriege denn ich darf den Spaltentyp nicht veränder, der soll auf DateTime bleiben.
Tabelle:
Java:
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import org.joda.time.DateTime;
import com.theotherbell.ui.DateField;
import com.theotherbell.ui.DatePicker;
public class Tabelle {
JPanel panel, pnlTasten;
JButton edit, fertig;
JScrollPane scp;
JTable tab;
DatePicker dp;
Tabelle(){
JFrame f=new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
erstellen();
f.getContentPane().add(panel);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
private void erstellen() {
panel=new JPanel(new BorderLayout());
// panel.setFocusCycleRoot(true);
TabelleModel mod=new TabelleModel();
tab=new JTable(mod);
tab.editCellAt(4, 0);
tab.setDefaultEditor(String.class, new EinfacherEditor());
tab.setDefaultEditor(DateTime.class , new JDateChooserCellEditor());
scp=new JScrollPane(tab);
pnlTasten=new JPanel();
edit=new JButton("Edit");
edit.addActionListener(new MeinActionHorcher());
fertig=new JButton("Fertig");
fertig.addActionListener(new MeinActionHorcher());
// scp.add(tab);
panel.add(scp, BorderLayout.NORTH);
pnlTasten.add(edit);
pnlTasten.add(fertig);
panel.add(pnlTasten, BorderLayout.SOUTH);
}
public static void main(String[] args) {
new Tabelle();
}
public class MeinActionHorcher implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == edit){
System.out.println("Edit wurde gecrückt");
tab.setEditingRow(3);
tab.setFocusable(true);
}
if (e.getSource()==fertig){
System.out.println("fertig wurde gedrückt");
}
}
}
}
Tabellen Model:
Java:
import java.util.ArrayList;
import java.util.List;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
import org.joda.time.DateTime;
public class TabelleModel implements TableModel {
List<TableModelListener> l = new ArrayList<TableModelListener>();
Object[][] ar = { { "a1", new DateTime(2012,5,13,0,0), "c1" },
{ "a2", new DateTime(2011,5,2,0,0), "c2" }, { "a3",new DateTime(2011,5,3,0,0) , "c3" },
{ "a4", new DateTime(2021,5,2,0,0), "c4" } };
@Override
public int getColumnCount() {
return 3;
}
@Override
public int getRowCount() {
return 4;
}
@Override
public Object getValueAt(int arg0, int arg1) {
return ar[arg0][arg1];
}
@Override
public void addTableModelListener(TableModelListener arg0) {
l.add(arg0);
}
@Override
public Class<?> getColumnClass(int arg0) {
switch(arg0){
case 0:return String.class;
case 1:return DateTime.class;
case 2:return String.class;
default:return null;
}
}
@Override
public String getColumnName(int arg0) {
return "asd";
}
@Override
public boolean isCellEditable(int arg0, int arg1) {
return true;
}
@Override
public void removeTableModelListener(TableModelListener arg0) {
l.remove(arg0);
}
@Override
public void setValueAt(Object arg0, int arg1, int arg2) {
ar[arg1][arg2]=arg0;
}
}
Editor für text:
Java:
import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JFormattedTextField;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import org.joda.time.DateTime;
import Kalender01.Termin;
import com.toedter.calendar.JDateChooser;
public class EinfacherEditor extends AbstractCellEditor implements
TableCellEditor {
/**
*
*/
private static final long serialVersionUID = 1L;
private JDateChooser dateChooser = new JDateChooser();
JFormattedTextField ftf;
@Override
public Object getCellEditorValue() {
String ergebniss;
return ftf.getText();
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
ftf = new JFormattedTextField();
System.out.println(table.getModel().getClass());
if ( value instanceof String) {
ftf.setText((String) value);
}
return ftf;
}
}
Java:
import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import org.joda.time.DateTime;
import com.toedter.calendar.JDateChooser;
/**
* A CellEditor for tables, using a JDateChooser.
*
* @author Kai Toedter
* @version $LastChangedRevision: 100 $
* @version $LastChangedDate: 2006-06-04 14:36:06 +0200 (So, 04 Jun 2006) $
*/
public class JDateChooserCellEditor extends AbstractCellEditor implements
TableCellEditor {
private static final long serialVersionUID = 917881575221755609L;
private JDateChooser dateChooser = new JDateChooser();
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
System.out.println(table.getModel().getClass());
DateTime date = new DateTime();
if (value instanceof DateTime)
date = (DateTime) value;
dateChooser.setDate(date.toDate());
return dateChooser;
}
public Object getCellEditorValue() {
return new DateTime(dateChooser.getDate());
}
}