04. maj 2003 - 02:59
Der er
1 løsning
JTable cell renderer med en icon og text ?
jeg har en collone i en JTable
hvor der vises et fil navn
jeg vil have en icon at stå lige før fil navnet
kan jeg gøre det med en cell renderer
eller skal jeg have en collone til at have iconen i ?
og om jeg kan gøre det med en cell renderer
kan nogen give et eksempel
ok jeg har fundet ud af det
med følgende kode
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.filechooser.FileSystemView;
import java.io.*;
class JLabelRenderer extends JLabel implements TableCellRenderer {
private boolean isSelected;
private boolean hasFocus;
private Icon icon;
public JLabelRenderer() {
}
public Component getTableCellRendererComponent( JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column )
{
String sText = (String)value;
this.isSelected=isSelected;
this.hasFocus=hasFocus;
try{
File tmpfile = new File(sText);
tmpfile.createNewFile();
icon = FileSystemView.getFileSystemView().getSystemIcon(tmpfile);
tmpfile.delete();
setIcon(icon);
}catch(IOException e){
System.out.println ("ups når vi prøvede at få en icon eller et eller andet");
}
setText( sText );
return this;
}
// This is a hack to paint the background. Normally a JLabel can
// paint its own background, but due to an apparent bug or
// limitation in the TreeCellRenderer, the paint method is
// required to handle this.
public void paint( Graphics g )
{
Color bColor;
// Set the correct background colour
if( isSelected )
bColor = Color.cyan;
else
bColor = Color.white;
if( hasFocus )
bColor = Color.red;
g.setColor( bColor );
// Draw a rectangle in the background of the cell
g.fillRect( 0, 0, getWidth() - 1, getHeight() - 1 );
super.paint( g );
}
}