Avatar billede lifo Nybegynder
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
Avatar billede lifo Nybegynder
04. maj 2003 - 18:16 #1
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 );
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester