按 rowid 为特定行着色
我有这样的 JTable
String[] columnTitles=new String[]{"Command","Offset","Type","Value","Units","R/W"};
Object[][] data=new Object[20][7];
for(int i=0;i<ROWS_NUMBER;i++){
cmbName=RootData.getRootData().getMessageContainer().getComboBoxNameTable();
cmbOffset=RootData.getRootData().getMessageContainer().getComboBoxOffsetTable();
txtType=new JTextField();
txtValue=new JTextField();
txtUnit=new JTextField();
cmbRW=new JComboBox(new String[]{"Read","Write"});
editorsCommand.add(new DefaultCellEditor(cmbName));
editorsOffset.add(new DefaultCellEditor(cmbOffset));
editorsType.add(new DefaultCellEditor(txtType));
editorsValue.add(new DefaultCellEditor(txtValue));
editorsUnits.add(new DefaultCellEditor(txtUnit));
editorsRW.add(new DefaultCellEditor(cmbRW));
}
for(int i=0;i<20;i++)
for(int j=0;j<7;j++)
data[i][j]="";
DefaultTableModel model=new DefaultTableModel(data,columnTitles);
this.tblCommands=new JTable(model){
/**
*
*/
private static final long serialVersionUID = 1L;
public TableCellEditor getCellEditor(int row, int column)
{
int modelColumn = convertColumnIndexToModel( column );
if (modelColumn == 0 && row < 20)
return editorsCommand.get(row);
else if(modelColumn == 1 && row < 20)
return editorsOffset.get(row);
else if(modelColumn == 2 && row < 20)
return editorsType.get(row);
else if(modelColumn == 3 && row < 20)
return editorsValue.get(row);
else if(modelColumn == 4 && row < 20)
return editorsUnits.get(row);
else if(modelColumn == 5 && row < 20)
return editorsRW.get(row);
else
return super.getCellEditor(row, column);
}
};
tblCommands.getColumnModel().getColumn(0).setMinWidth(300);
System.out.println(model.isCellEditable(0,2));
spCommand=new JScrollPane(tblCommands);
How to color one row foe example row=2 in Color green?
I have JTable like this
String[] columnTitles=new String[]{"Command","Offset","Type","Value","Units","R/W"};
Object[][] data=new Object[20][7];
for(int i=0;i<ROWS_NUMBER;i++){
cmbName=RootData.getRootData().getMessageContainer().getComboBoxNameTable();
cmbOffset=RootData.getRootData().getMessageContainer().getComboBoxOffsetTable();
txtType=new JTextField();
txtValue=new JTextField();
txtUnit=new JTextField();
cmbRW=new JComboBox(new String[]{"Read","Write"});
editorsCommand.add(new DefaultCellEditor(cmbName));
editorsOffset.add(new DefaultCellEditor(cmbOffset));
editorsType.add(new DefaultCellEditor(txtType));
editorsValue.add(new DefaultCellEditor(txtValue));
editorsUnits.add(new DefaultCellEditor(txtUnit));
editorsRW.add(new DefaultCellEditor(cmbRW));
}
for(int i=0;i<20;i++)
for(int j=0;j<7;j++)
data[i][j]="";
DefaultTableModel model=new DefaultTableModel(data,columnTitles);
this.tblCommands=new JTable(model){
/**
*
*/
private static final long serialVersionUID = 1L;
public TableCellEditor getCellEditor(int row, int column)
{
int modelColumn = convertColumnIndexToModel( column );
if (modelColumn == 0 && row < 20)
return editorsCommand.get(row);
else if(modelColumn == 1 && row < 20)
return editorsOffset.get(row);
else if(modelColumn == 2 && row < 20)
return editorsType.get(row);
else if(modelColumn == 3 && row < 20)
return editorsValue.get(row);
else if(modelColumn == 4 && row < 20)
return editorsUnits.get(row);
else if(modelColumn == 5 && row < 20)
return editorsRW.get(row);
else
return super.getCellEditor(row, column);
}
};
tblCommands.getColumnModel().getColumn(0).setMinWidth(300);
System.out.println(model.isCellEditable(0,2));
spCommand=new JScrollPane(tblCommands);
How to color one row foe example row=2 in Color green?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
典型的方法是让您的 CellRenderer 对象为您需要的行着色:
http://download.oracle.com/javase/tutorial/ uiswing/components/table.html#renderer
另一种方法可以在 camickr 答案的第二部分中找到:
我是否可以突出显示一行在 JTable 中?
The typical method is just to have your CellRenderer objects color the rows you need:
http://download.oracle.com/javase/tutorial/uiswing/components/table.html#renderer
Another approach can be found in the second part of camickr's answer here:
Is there anyway I can highlight a row in JTable?
例如,搜索
prepareRenderer
,遵循由trashgod 提供的链接Table Row Rendering
,来自 JTable 使用 TableCellRenderer 更改单元格颜色search for
prepareRenderer
for example follows linkTable Row Rendering
by trashgod from JTable change cell colors using TableCellRenderer请参阅表格行渲染。
See Table Row Rendering.