Вот мой кусок кода -
class ButtonCellRenderer extends AbstractCellEditor
implements TableCellRenderer,TableCellEditor,MouseListener{
JTable table;
JLabel rendererLabel ;
JButton editButton ;
String text = "BAKRA";
public ButtonCellRenderer(JTable table, int column) {
this.table = table;
rendererLabel = new JLabel("value.png");
//rendererBut.setToolTipText("BUNTHAAAAAAAAAAAAAA");
rendererLabel .addMouseListener(this);
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(column).setCellRenderer( this );
columnModel.getColumn(column).setCellEditor( this );
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row
, int column) {
// TODO Auto-generated method stub
rendererLabel.setOpaque(true);
if(isSelected)
rendererLabel.setBackground( table.getSelectionBackground());
else
rendererLabel.setBackground(Color.WHITE);
return rendererLabel ;
}
public Component getTableCellEditorComponent(
JTable table, Object value, boolean isSelected, int row, int column)
{
return rendererLabel ;
}
public Object getCellEditorValue() {
// TODO Auto-generated method stub
return text;
}
public void mousePerformed(ActionEvent ev) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "UOBS BUTTON PRESSED",
"BUTTON PRESSED"
,JOptionPane.ERROR_MESSAGE);
}
}
В этом все работает нормально, но -
На самом деле, когда открывается окно JTable и если я щелкаю непосредственно по столбцу на основе JLabel (изображение), то изображение на некоторое время исчезает, и таблица возвращает выбранную строку как -1.
Еще один момент заключается в том, что выбор строки также ограничен предыдущим столбцом.
Точно, если в моей таблице 4 столбца, а изображение (JLabel) находится на
столбец номер 4, тогда, если я непосредственно нажимаю на изображение или столбец 4-й
, то выбор строки происходит до 3-го столбца и возвращается
выбор строки как -1. Но если я выберу любой другой столбец,
все в порядке и работает нормально.