JTable verwenden

THX
Ok. Leuchtet mir alles ein. Aber an einer Stelle steh ich trotzdem aufm
Schlauch:
Code:
JLabel label=JLabel(ic);
WIe bringe ich das auf einen Nenner, wenn ich den Renderer das extends JLabel
anhänge?
Wenn ich es so schreibe(Was mir ohnehin schon flasch erscheint):
Code:
this=(JLabel)t;
Kommt das:
The left-hand side of an assignment must be a variable

Und hier noch mal der ganze Code:
Code:
import java.awt.Component;
   import java.awt.FlowLayout;
   import java.awt.event.MouseEvent;
   import java.awt.event.MouseListener;
   import java.io.File;
   import javax.swing.Icon;
   import javax.swing.JFrame;
   import javax.swing.JLabel;
   import javax.swing.JScrollPane;
   import javax.swing.JTable;
   import javax.swing.ListSelectionModel;
   import javax.swing.filechooser.FileSystemView;
   import javax.swing.table.DefaultTableModel;
   import javax.swing.table.TableCellRenderer;
   
   
   public class Tab {
   	class IconRenderer extends JLabel implements TableCellRenderer
   	{
   		public Component getTableCellRendererComponent(JTable tabelle, 
 		 		 		 		 		Object t, 
 		 		 		 		 		boolean isSelected, 
 		 		 		 		 		boolean hasFocus, 
 		 		 		 		 		int row, 
 		 		 		 		 		int column) 
   		{
   			this.add((JLabel)t);
   			if (tabelle.getSelectedRow()==row)
   			{
   				
   			}
   			return this;
   		}
   	}
   	
   	public void GUI()
   	{
   		JFrame fenster = new JFrame();
   		JScrollPane pane = new JScrollPane();
   		Object[] head=new Object[]
   		{
   			 "Name",
   			 "Pfad",
   			 "Typ",
   			 "Relevanz",
   			 "Größe",
   			 "Datum"
   		};
   		DefaultTableModel model = new DefaultTableModel(head,0);
   		final JTable tabelle = new JTable(model);
   		fenster.getContentPane().setLayout(new FlowLayout());
   		pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
   		pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
   		pane.setViewportView(tabelle);
   		fenster.getContentPane().add(pane);
   		fenster.setSize(300,325);
   		fenster.setLocation(200,200);
   		tabelle.setAutoResizeMode(tabelle.AUTO_RESIZE_OFF);
   		tabelle.setAutoscrolls(true);
   		tabelle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   		tabelle.addMouseListener(new MouseListener()
   		{
   			public void mouseClicked(MouseEvent me) {
   				//für den Rechtsklick
 		 	if (me.getButton()==MouseEvent.BUTTON3)System.out.println("jo");
   				//Für den Linksklick
 				if (me.getButton()==MouseEvent.BUTTON1)
   				{
   					
   				}
   			}
   			public void mouseEntered(MouseEvent me) {
 				// TODO Auto-generated method stub
   				
   			}
   			public void mouseExited(MouseEvent me) {
 				// TODO Auto-generated method stub
   				
   			}
   			public void mousePressed(MouseEvent me) {
 				// TODO Auto-generated method stub
   				
   			}
   			public void mouseReleased(MouseEvent me) {
 				// TODO Auto-generated method stub
   				
   			}	
   		});
   		int i=0;
   		tabelle.setShowGrid(false);
   		FileSystemView fsv=FileSystemView.getFileSystemView();
  		Icon ic = fsv.getSystemIcon(new File("datei"));
   		fenster.show();
   		for (;i<32;i++)
   		{
   			JLabel label1 = new JLabel(ic);
   			label1.setText("Test");
   			label1.setFont(tabelle.getFont());
   			JLabel label2 = new JLabel("TestPfad");
   			label2.setFont(tabelle.getFont());
   			JLabel label3 = new JLabel("TestTyp");
   			label3.setFont(tabelle.getFont());
   			JLabel label4 = new JLabel("TestRel"+i);
   			label4.setFont(tabelle.getFont());
   			JLabel label5 = new JLabel("TestGröße");
   			label5.setFont(tabelle.getFont());
   			JLabel label6 = new JLabel("TestDatum");
   			label6.setFont(tabelle.getFont());
   			Object[] entry=new Object[]
   			{
 					label1,
 					label2,
 					label3,
 					label4,
 					label5,
   					label6
   			};
   		model.addRow(entry);
   		}
   		tabelle.getColumn("Name").setCellRenderer(
   		    		   new IconRenderer()
   					 );
   		tabelle.getColumn("Pfad").setCellRenderer(
   				   new IconRenderer()
   				 );
   		tabelle.getColumn("Typ").setCellRenderer(
   				   new IconRenderer()
   				 );
   		tabelle.getColumn("Relevanz").setCellRenderer(
   				   new IconRenderer()
   				 );
   		tabelle.getColumn("Größe").setCellRenderer(
   				   new IconRenderer()
   				 );
   		tabelle.getColumn("Datum").setCellRenderer(
   				   new IconRenderer()
   				 );
   		
   	}
   	
   	public static void main(String[] args) 
   	{
   		Tab t =new Tab();
   		t.GUI();
   	}
   }
 
Zuletzt bearbeitet:
Hi,
also ich verstehe das im Renderer nicht:

this.add((JLabel)t);

Der Renderer ist doch schon ein JLabel, also höchstens

this.setIcon() oder this.setText() in der Art.
 
Aber das ist ja das Problem.
Der Renderer bekommt ja schon ein Label.
Und das weil in der ersten Column 2 Objekte stehen
müssen. Ein Icon und Text.
 
Moin,
dann eignet sich ... extends JLabel nicht. :-)
Ein JPanel mit einem JLabel für das Icon und einem JLabel oder JTextField für den Text bieten sich eher an.
 
Zurück