java swing控件JTable 怎么单独设置某一行的颜色

不要贴网上的代码,举一个简单的例子就行,谢谢各位大侠了!能解决了加分!都给你……... 不要贴网上的代码,举一个简单的例子就行,谢谢各位大侠了!能解决了加分!都给你…… 展开
 我来答
悉心且深远灬萨摩A
推荐于2017-09-18 · TA获得超过636个赞
知道小有建树答主
回答量:294
采纳率:0%
帮助的人:310万
展开全部

这是我以前做的:

public Component getTableCellRendererComponent(JTable table,Object value,

            boolean isSelected,boolean hasFocus,int row,int column)

{

//如果是图标,就要显示图标,否则就显示文本

if(value instanceof Icon)

this.setIcon((Icon)value);

else

this.setText(value.toString());

//如果被选中

if(isSelected)

//设置选定单元格的背景色。单元格渲染器可以使用此颜色填充选定单元格。 

//返回选定单元格的背景色。 

super.setBackground(table.getSelectionBackground());

else

this.setBackground(table.getBackground());

//设置居中

this.setHorizontalAlignment(JLabel.CENTER);

this.setToolTipText(value.toString());

return this;

}

ps.要在JTable中添加这个渲染器。

样式:


附:自己多查API

javax.swing.table.TableCellRenderer

此接口定义了要成为 JTable 中单元格渲染器的任意对象所需的方法


getTableCellRendererComponentComponentgetTableCellRendererComponent(JTable table,

Object value,

boolean isSelected,

boolean hasFocus,

int row,

int column)返回用于绘制单元格的组件。此方法用于在绘制前适当地配置渲染器。 

TableCellRenderer 还负责呈现表示该表当前 DnD 放置位置的单元格(如果有)。如果此呈现器负责呈现 DnD 放置位置,则它应该直接查询表以确定给定的行和列是否表示放置位置: 

     JTable.DropLocation dropLocation = table.getDropLocation();

if (dropLocation != null

&& !dropLocation.isInsertRow()

&& !dropLocation.isInsertColumn()

&& dropLocation.getRow() == row

&& dropLocation.getColumn() == column) {


// this cell represents the current drop location

// so render it specially, perhaps with a different color

}

在打印操作期间,将调用此方法(isSelected 和 hasFocus 为 

false)阻止选择和焦点在打印输出中出现。要根据是否打印表进行其他定制,检查 JComponent.isPaintingForPrint() 

的返回值。 

参数:table - 要求渲染器绘制的 JTable;可以为 nullvalue - 要呈现的单元格的值。由具体的渲染器解释和绘制该值。例如,如果 value 是字符串 

"true",则它可呈现为字符串,或者也可呈现为已选中的复选框。null 是有效值

isSelected - 如果使用选中样式的高亮显示来呈现该单元格,则为 true;否则为 false

hasFocus - 如果为 

true,则适当地呈现单元格。例如,在单元格上放入特殊的边框,如果可以编辑该单元格,则以彩色呈现它,用于指示正在进行编辑

row - 要绘制的单元格的行索引。绘制头时,row 值是 -1

column - 要绘制的单元格的列索引

javax.swing.JTable#getColumn

public TableColumn getColumn(Object identifier)返回表中列的 TableColumn 对象,当使用 equals 进行比较时,表的标识符等于 

identifier。


javax.swing.table.TableColumn#setCellRenderer

public void setCellRenderer(TableCellRenderer cellRenderer)

lujintao123123
2013-01-02 · TA获得超过184个赞
知道小有建树答主
回答量:502
采纳率:50%
帮助的人:252万
展开全部
JTable有属性selectionBackground(),设置背景色selectionForeground(),设置前景色。不知道你要怎么实现,如果是要某一行的话,是需要鼠标点的那一行呢?还是假如要第5行就只要那一行呢?这个只是判断。。。。正题:
序号 年龄 班级
1 10 小二班
2 9 大二班
if(defectsTable.getValueAt(defectsTable.getSelectedRow(),0) == 1) //如果鼠标点击的是行的序号为1
{
for(遍历这一行的单元格){
XXX.setSelectionBackground(Color.Blue);//满足条件单元格为蓝色
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式