G
Guest
Gast
Hallo Leutz!!!
Ich habe relativ simple Frage: Was mache ich falsch? ;-)
Folgendes bekomme ich:
- Die Stringspalten sind zu eng und in der Größe aneinander gebunden. :-(
- Die Farbunterscheidung ist nicht zu sehen
- Strings erscheinen Fett
- Andere Spalten sind zu breit, obwohl sie eng gedacht wurden
- Zahlenformatierung funktioniert nicht.
- Ausrichtung funktioniert nicht
Kann mir hier jemand etwas helfen? Es wäre sehr freundlich. Danke.
Gruß
Taik
PS: Ich bin ein blutiger Anfänger, was Java Programmierung betrifft. Also bitte etwas mehr Geduld. Danke. ;-)
Ich habe relativ simple Frage: Was mache ich falsch? ;-)
Code:
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.text.DecimalFormat;
import java.util.*;
import java.util.GregorianCalendar.*;
import java.util.Date.*;
public class DepotCellRenderer extends JLabel implements TableCellRenderer{
public DepotCellRenderer(){
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
int[] breite = {20,9,10,11,5,5,7,7,10,10,7,2};
int[] ausrichtung = {SwingConstants.LEFT,SwingConstants.CENTER,SwingConstants.CENTER,SwingConstants.RIGHT,
SwingConstants.LEFT,SwingConstants.CENTER,SwingConstants.RIGHT,SwingConstants.RIGHT,
SwingConstants.RIGHT,SwingConstants.RIGHT,SwingConstants.RIGHT,SwingConstants.CENTER};
table.getColumnModel().getColumn(column).setPreferredWidth(breite[column]);
table.setShowGrid(false);
table.setShowHorizontalLines(true);
setHorizontalAlignment(ausrichtung[column]);
int klasse = -1;
if (value instanceof String) klasse = 0;
if (value instanceof Integer) klasse = 1;
if (value instanceof Boolean) klasse = 2;
if (value instanceof Double) klasse = 3;
if (value instanceof Date) klasse = 4;
switch(klasse){
case 0: stringView((String)value);
return this;
case 1: integerView((Integer)value);
return this;
case 2: booleanView((Boolean)value);
return this;
case 3: doubleView((Double)value);
return this;
case 4: dateView((Date)value);
return this;
default: setText(value.toString());
return this;
}
}
public void doubleView(Double dv){
DecimalFormat df = new DecimalFormat("#,###.00");
if (dv<=0.0) setForeground(Color.RED);
else setForeground(Color.GREEN);
setText(df.format(Math.round(dv*100.)/100.));
}
public void dateView(Date dv){
GregorianCalendar past = new GregorianCalendar();
GregorianCalendar today = new GregorianCalendar();
past.setTime(dv);
today.setTimeInMillis(System.currentTimeMillis());
if (today.YEAR-past.YEAR>=1){
if(today.DAY_OF_MONTH-past.DAY_OF_MONTH>=1){
if(today.MONTH-past.MONTH>=1){
setForeground(Color.GREEN);
setText(dv.toString());
}
}
}
}
public void stringView(String sv){
if (sv.length()>20){
setForeground(Color.BLACK);
setText(sv.substring(0,20)+"\n"+sv.substring(20,sv.length()));
}
}
public void integerView(int iv){}
public void booleanView(Boolean bv){}
}
- Die Stringspalten sind zu eng und in der Größe aneinander gebunden. :-(
- Die Farbunterscheidung ist nicht zu sehen
- Strings erscheinen Fett
- Andere Spalten sind zu breit, obwohl sie eng gedacht wurden
- Zahlenformatierung funktioniert nicht.
- Ausrichtung funktioniert nicht
Kann mir hier jemand etwas helfen? Es wäre sehr freundlich. Danke.
Gruß
Taik
PS: Ich bin ein blutiger Anfänger, was Java Programmierung betrifft. Also bitte etwas mehr Geduld. Danke. ;-)