这是我的一段代码-
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(图像)的 Column ,那么图像会消失一段时间,表格将所选行返回为 -1。还有一点是,行选择也仅限于前一列。
准确地说,如果我的表有 4 列并且 Image(JLabel) 位于第 4 列,那么如果我直接单击图像或第 4 列,则行选择将发生到第 3 列,并将行选择返回为 -1 . 但是,如果我选择任何其他列,则一切正常并且工作正常。