I want when the mouse enter a row in table, I want every column colors in that row change to blue.
I have done this, and it changed, but it only change when I press my mouse not when my mouse enter it.
private void changeColorTableCell(JTable tbl, int index) {
tbl.getColumnModel().getColumn(index).setCellRenderer(new DefaultTableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
c.setBackground(Color.BLUE);
return c;
}
});
}
private void tabelPesananMouseEntered(java.awt.event.MouseEvent evt) {
int count = tabelPesanan.getColumnModel().getColumnCount();
for(int i = 0; i < count; i++) {
changeColorTableCell(tabelPesanan, i);
}
}
How to change all JTable
column color in a row when mouse entered ?
getColumn(index).setCellRenderer(…)
won't work. If you want to change the color of an entire row, you can't just change the renderer of one column.
While you could set a default renderer, or you could set the cell renderers of each column, the better option is to override prepareRenderer , so any other renderers will not be affected aside from their background color.
private int hoveredRow = -1;
// ...
JTable tabelPesanan = new JTable() {
private static final long serialVersionUID = 1;
@Override
public Component prepareRenderer(TableCellRenderer renderer,
int row,
int column) {
Component component =
super.prepareRenderer(renderer, row, column);
if (row == hoveredRow) {
component.setBackground(Color.BLUE);
} else if (isCellSelected(row, column)) {
component.setBackground(getSelectionBackground());
} else {
component.setBackground(getBackground());
}
return component;
}
};
MouseInputListener hoveredRowUpdater = new MouseInputAdapter() {
private void repaintRow(int row) {
if (row >= 0) {
Rectangle bounds = tabelPesanan.getCellRect(row, 0, true);
int width = tabelPesanan.getWidth();
tabelPesanan.repaint(0, bounds.y, width, bounds.height);
}
}
private void updateHoveredRowFrom(MouseEvent event) {
int oldHoveredRow = hoveredRow;
hoveredRow = tabelPesanan.rowAtPoint(event.getPoint());
repaintRow(oldHoveredRow);
repaintRow(hoveredRow);
}
@Override
public void mouseEntered(MouseEvent event) {
updateHoveredRowFrom(event);
}
@Override
public void mouseExited(MouseEvent event) {
updateHoveredRowFrom(event);
}
@Override
public void mouseMoved(MouseEvent event) {
updateHoveredRowFrom(event);
}
@Override
public void mouseDragged(MouseEvent event) {
updateHoveredRowFrom(event);
}
};
tabelPesanan.addMouseListener(hoveredRowUpdater);
tabelPesanan.addMouseMotionListener(hoveredRowUpdater);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.