F
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