TableModel

Z

Zentrum

Gast
Hallo.

ich habe ein eigenes Tablemodel geschrieben, von Abstract Table Model. Jetzt werden bei mir in spalte 11 und 12 Daten gelistet(mehrzahl von Datum)!

Leider zeigt er mir die Daten falsch an, muss ich in getcolumnclass dies angeben?! Wenn ja dann mach ich dort was falsch.

Java:
public Class<?> getColumnClass(int column) {
		if (column == 2)
			return Long.class;
		else if(column ==11)
                        return Date.class;

		return Object.class;

	}

Danke, das Datum soll er mir so anzeigen dd.MM.yyyy
 

Foermchen82

Top Contributor
Was zeigt er denn an?

Du musst außerdem auf die Indizes des Spalten achte. Z.b. hat Spalte 11 den Index 10!!!

Das Was er dir explizit anzeigt definierst du in der Methode getValueAt. Da musst du dann dein Datum entsprechend in einen String wandeln und ausgeben.
 

Michael...

Top Contributor
Wenn im Model an der Stelle tatsächlich ein Date Objekt enthalten ist und das Gebietsschema des Betriebssystem auf Deutsch o.ä. steht, zeigt die Tabelle die Daten wie gewünscht an.

Wenn die Applikation ein anders Gebietsschema verwenden soll als das des OS
Kann man das auch manuell festlegen.
Java:
Locale.setDefault(Locale.GERMAN);
 
Z

zentrum

Gast
Das gibt er mir aus:

Mon Jul 19 15:18:10 CEST 2010


Das Model seht ihr hier:

Java:
public class TableModel extends AbstractTableModel {
	private List<DispoVO> dispoVO;
	
	public void uebergabe_liste(List<DispoVO> list) {
		this.dispoVO = list;
		fireTableDataChanged();
	}

	String[] header = { "Äl", "Gr", "AnzufStk", "Filialbest", "VerkStk",
			"Lagerbest", "Fakturabest", "Folgt", "Offene Posten", "UnterwHin",
			"UnterwRück", "Merkmal", "GültigVon", "GültigBis" };

	@Override
	public String getColumnName(int column) {
		return header[column];

	}

	@Override
	public int getColumnCount() {
		return header.length;
	}

	@Override
	public int getRowCount() {
		if (dispoVO == null) {
			return 8;
		} else {
			return dispoVO.size();
		}
	}

	@Override
	public Object getValueAt(int row, int col) {

		if (!dispoVO.equals(null)) {
			DispoVO dispo = dispoVO.get(row);
			switch (col) {
			case 0:
				return dispo.getAl();
			case 1:
				return dispo.getGroesse();
			case 2:
				return dispo.getAnzufStk();
			case 3:
				return dispo.getFilBest();
			case 4:
				return dispo.getVerkStk();
			case 5:
				return dispo.getLagerBest();
			case 6:
				return dispo.getFaktBest();
			case 7:
				return dispo.getFolgt();
			case 8:
				return dispo.getOffeneAnf();
			case 9:
				return dispo.getUnterwHin();
			case 10:
				return dispo.getUnterwRueck();
			case 11:
				return dispo.getMerkmal();
			case 12:
				if (dispo.getGueltigVon() != null) {
					return dispo.getGueltigVon();
				}
				return null;
			case 13:
				if (dispo.getGueltigBis() != null) {
					return dispo.getGueltigBis();
				}
				return null;
			}
		}

		fireTableDataChanged();
		return col;
	}
	
	public void setValueAt(Object value, int row, int column) {
		if (column == 2)
			dispoVO.get(row).setAnzufStk(Long.parseLong(value.toString()));
		
			fireTableDataChanged();
	}

	public boolean isCellEditable(int x, int y) {
		if (y == 2) {
			return true;
		} else {
			return false;
		}
	}

	public Class<?> getColumnClass(int column) {
		if (column == 2)
			return Long.class;
		else if(column == 11){
			return Date.class;
		}
		return Object.class;

	}

}
 
Z

zentrum

Gast
Java:
public Class<?> getColumnClass(int column) {
		if (column == 2)
			return Long.class;
		else if(column == 13){
			return Date.class;
		}
		return Object.class;

	}

hatte dort 11 drin aber müsste 12/13 sein aber hat nicht geholfen! ^^

mit dem

Locale.setDefault(Locale.GERMAN);

wohin muss das?
 

Michael...

Top Contributor
In dem Model sind die Daten im Spaltenindex 12 und 13 enthalten. In dem ersten Post sprichst zu von 11 und 12.

Wenn's daran nicht lagen: Wie schauen die Methoden von
Code:
dispo.getGueltigVon()
und
Code:
dispo.getGueltigBis()
aus? Was liefern sie zurück?
 

Foermchen82

Top Contributor
wenn du jetzt die Ausgabe in der Formatierung dd.MM.yyyy haben willst musst du dir deinen DateFormater nehmen und das Pattern mitliefern. Dann rufst du auf dem Formater die Methode format(Date) und du hast deinen String.
 

Michael...

Top Contributor
Beide liefern ein Date zurück.
Glaube ich nicht ;-)

Hier mal was zum Testen. Bei mir wird das Datum im Format dd.MM.YYYY angezeigt

Java:
	JTable table = new JTable(new Object[][] {{"A", new Date()}}, new String[] {"Text", "Datum"}) {
		public Class<?> getColumnClass(int column) {
			if (column==1)
				return Date.class;
			return Object.class;
		}
	};
	JFrame frame = new JFrame();
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setBounds(0, 0, 400, 400);
	frame.getContentPane().add(table);
	frame.setVisible(true);
 
Z

zentrum

Gast
achso ob die da unten ein Date zurückliefer nhabe ich nicht geguckt

Meine die Methoden liefern ein Date zurück

die dispo.getGueltigVon() und dispo.getGueltigBis() Methoden:) die Liefern ein Date zurück, aber es klappt schon und es ist perfekt

Ich danke dir auch nochmal für die nette Mühe...
 

Firestorm87

Bekanntes Mitglied
wenn du jetzt die Ausgabe in der Formatierung dd.MM.yyyy haben willst musst du dir deinen DateFormater nehmen
Diese Methode hat lediglich den nachteil, dass die Tabelle sich nun nicht mehr ganz so einfach sortieren lassen würde, als es vorher der Fall war.

Standartmäßig würden die reinen Stringdarstellungen natülich dann nicht nach dem Datumswert sortiert werden.
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Ähnliche Java Themen

Neue Themen


Oben