grob zur funktionalität, in der spalte wo die größe angegeben wird soll vor allen files deren größe zum test 1000 überschreitet ein sternchen verpasst bekommen.
das ist der Renderer und nun kommt das Examplefile:
das Icon wird in der JTable nicht angezeigt und die zahlen sind nicht rechts ausgerichtet. Wo könnte der Fehler liegen??
greetz
Snoop
Code:
import ....
public class BigRenderer extends DefaultTableCellRenderer{
double threshold;
Icon stern = new ImageIcon("stern.gif");
public BigRenderer(double t){
threshold = t;
setHorizontalAlignment(JLabel.RIGHT);
setHorizontalTextPosition(SwingConstrants.RIGHT);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col){
if(value instanceof Number){
if(((Number)value).doubleValue() > threshold){
setIcon(stern);
}
else{
setIcon(null);
}
}
else{
setIcon(null);
}
}
return super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,col);
}
das ist der Renderer und nun kommt das Examplefile:
Code:
import ....
public class BigRendererExample extends JFrame{
String titles[] = new String ("Directory","File Name","Read","Write","Size","Last Modified");
public BigRendererExample(){
super("Renderertest");
setSize(500,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
File pwd = new FIle(".");
Object[][] stats = getFileStats(pwd);
JTable jt =new JTable(stats,titles);
jt.setAutoResizeModus(JTable.AUTO_RESIZE_OFF);
jt.setColumnSelectionAllowed(true);
jt.setDefaultRenderer(Number.class,new BigRenderer(1000);
JScrollPane jsp = new JScrollPane(jt);
getContentPane().add(jsp,BorderLayout.CENTER);
}
public Object[][] getFileStats(File dir){
String files[] = dir.list();
Object[][] results = new Object[files.length][titles.length];
for(int i=0; i<files.length;i++){
File tmp = new File(files[i]);
results[i][0] = new Boolean(tmp.isDirectory());
results[i][1] = tmp.getName();
results[i][2] = new Boolean(tmp.canRead());
results[i][3] = new Boolean(tmp.canWrite());
results[i][4] = new Long(tmp.length());
results[i][5] = new Date(tmp.lasModified());
}
return results;
}
public static void main(String[] args){
BigRendererExample tf = new BigRendererExample();
tf.setVisible(true);
}
}
das Icon wird in der JTable nicht angezeigt und die zahlen sind nicht rechts ausgerichtet. Wo könnte der Fehler liegen??
greetz
Snoop