ScrollPane in Tabellenzelle nicht scrollbar



  • Hallo.

    Ich habe mir ein eigenes Tabellenmodell geschrieben. Außerdem habe ich einen Tabellen Renderer und nun auch einen Tabellen Cell Editor.

    Ich möchte in einer Tabellen Spalte TextAreas in ScrollPanes darstellen. Das habe ich bisher im Renderer gemacht und geht auch ganz gut. Nur ein Problem habe ich : Ich kann im Scroll Pane nicht scrollen. Kann mir jemand helfen. Habe bereits versucht das üher einen TableCellEditor zu lösen aber ohne erfolg.

    Hier sind meine code teile :

    public class _DefaultTableCellEditor extends AbstractCellEditor implements TableCellEditor
    {
    
    	@Override
    	public Object getCellEditorValue()
    	{
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    	@Override
    	public Component getTableCellEditorComponent(JTable table, Object value,
    			boolean isSelected, int row, int column)
    	{
    		JComponent cellObject;
    
    		// create a new cell object for every column
    		switch(column)
    		{
    			case 0: cellObject	= new JCheckBox();
    			break;
    
    			case 5: 
    				JTextArea cellTextarea	= new JTextArea();
    				cellTextarea.setText((String)value);
    				cellObject	= new JScrollPane(cellTextarea);
    
    			break;
    
    			default: 
    				cellObject	= new JLabel();
    				((JLabel)cellObject).setText((String)value);
    				((JLabel)cellObject).setAlignmentX(JLabel.CENTER_ALIGNMENT);
    				((JLabel)cellObject).setAlignmentY(JLabel.CENTER_ALIGNMENT);
    			break;
    		}
    
    		return cellObject;
    	}
    
    public class _DefaultTabelCellRenderer implements TableCellRenderer
    {
    	private int[] columnWidthPercent	= null;
    
    	/**
    	 * 
    	 * @param columnWidth
    	 */
    	public _DefaultTabelCellRenderer(int[] columnWidthPercent)
    	{
    		this.columnWidthPercent	= columnWidthPercent;
    	}
    
    	@Override
    	public Component getTableCellRendererComponent(JTable table, Object value,
    			boolean isSelected, boolean hasFocus, int row, int column)
    	{		
    		// set the column width
    		if (columnWidthPercent != null)
    		{
    			int tableWidth	= table.getWidth();
    
    			for (int index = 0; index < columnWidthPercent.length; index++)
    			{
    				table.getColumnModel().getColumn(index).setPreferredWidth( tableWidth *  columnWidthPercent[index] / 100);
    				table.getColumnModel().getColumn(index).setMaxWidth( tableWidth *  columnWidthPercent[index] / 100);	
    			}		
    		}
    
    		JComponent cellObject;
    
    		// create a new cell object for every column
    		switch(column)
    		{
    			case 0: cellObject	= new JCheckBox();
    			break;
    
    			case 5: 
    				JTextArea cellTextarea	= new JTextArea();
    				cellTextarea.setText((String)value);
    				cellTextarea.setEditable(true);
    				cellObject	= new JScrollPane(cellTextarea);
    
    			break;
    
    			default: 
    				cellObject	= new JLabel();
    				((JLabel)cellObject).setText((String)value);
    				((JLabel)cellObject).setAlignmentX(JLabel.CENTER_ALIGNMENT);
    				((JLabel)cellObject).setAlignmentY(JLabel.CENTER_ALIGNMENT);
    			break;
    		}
    
    		// set the font
    		cellObject.setFont(table.getFont());
    
    		// set the color
    		cellObject.setForeground(table.getForeground());
    		cellObject.setBackground(table.getBackground());
    
    		// every second row is colored		
    		if (row % 2 == 0)
    		{			
    			cellObject.setBorder(BorderFactory.createMatteBorder(2, 0, 2, 0, new Color(190, 190, 190)));			
    		}	
    
    		if (isSelected == true)
    		{
    			cellObject.setBackground(new Color(070, 130, 180));
    		}
    
    		if (hasFocus == true)
    		{
    			cellObject.setBackground(new Color(030, 144, 255));			
    		}	
    
    		return cellObject;
    

    Vielen Dank


Anmelden zum Antworten