设置单击的 table 单元格的背景颜色
Set Background Color of a clicked table cell
我是 Java 的新手,我想更改 JTable
.
中我单击的特定单元格的背景颜色
我知道我必须使用我已经用过的 MouseListener
,还有 mousePressed
。但在这一点上我很迷茫。
编辑: 忘记添加 table 已禁用,因此您不能 select 单元格。
谁能帮帮我?谢谢!
您必须创建自定义 TableCellRenderer
并将其传递给 table
像这样
public class ColorRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
// get the DefaultCellRenderer to give you the basic component
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
// apply your rules
if(table.isRowSelected(row) && table.isColumnSelected(col))
c.setBackground(Color.GREEN);
else{
c.setBackground(table.getBackground());
}
return c;
}
}
在这个 class 中,我们检查给定的单元格是否为选定的单元格(这几乎是我们单击它时发生的情况)并以不同的方式绘制它(在我的例子中我将其绘制为绿色),否则我们使用默认颜色或您喜欢的任何颜色绘画。
不要忘记设置您刚刚创建的自定义渲染器
table.setDefaultRenderer(Object.class, new ColorRenderer());
编辑 1
您必须获取单击单元格的行和列。
创建 2 个将保持位置的 int 变量
private int clickedRow=-1,clickedCol=-1;
添加一个更新位置变量的鼠标侦听器
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent event) {
clickedRow= table.rowAtPoint(event.getPoint());
clickedCol= table.columnAtPoint(event.getPoint());
}
});
之后更改渲染器,使其仅使用特殊颜色绘制单击的单元格
if( clickedRow == row && clickedCol == col){
c.setBackground(Color.GREEN);
}
我是 Java 的新手,我想更改 JTable
.
我知道我必须使用我已经用过的 MouseListener
,还有 mousePressed
。但在这一点上我很迷茫。
编辑: 忘记添加 table 已禁用,因此您不能 select 单元格。
谁能帮帮我?谢谢!
您必须创建自定义 TableCellRenderer
并将其传递给 table
像这样
public class ColorRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
// get the DefaultCellRenderer to give you the basic component
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
// apply your rules
if(table.isRowSelected(row) && table.isColumnSelected(col))
c.setBackground(Color.GREEN);
else{
c.setBackground(table.getBackground());
}
return c;
}
}
在这个 class 中,我们检查给定的单元格是否为选定的单元格(这几乎是我们单击它时发生的情况)并以不同的方式绘制它(在我的例子中我将其绘制为绿色),否则我们使用默认颜色或您喜欢的任何颜色绘画。
不要忘记设置您刚刚创建的自定义渲染器
table.setDefaultRenderer(Object.class, new ColorRenderer());
编辑 1
您必须获取单击单元格的行和列。
创建 2 个将保持位置的 int 变量
private int clickedRow=-1,clickedCol=-1;
添加一个更新位置变量的鼠标侦听器
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent event) {
clickedRow= table.rowAtPoint(event.getPoint());
clickedCol= table.columnAtPoint(event.getPoint());
}
});
之后更改渲染器,使其仅使用特殊颜色绘制单击的单元格
if( clickedRow == row && clickedCol == col){
c.setBackground(Color.GREEN);
}