【发布时间】:2015-10-29 18:42:25
【问题描述】:
我有一个 JXTreeTable 并且我已经实现了一个自定义渲染器。
所以我有这个代码:
public class CustomTreeTableSpeseXCategoriaSpese extends JLabel implements TreeCellRenderer, TableCellRenderer {
/**
*
*/
private static final long serialVersionUID = 4842418316518803090L;
private Font fontTotale = new Font("Verdana", Font.BOLD, 12);
private Font fontNegativo = new Font("Verdana", Font.BOLD, 12);
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
setOpaque(true);
setHorizontalAlignment(SwingConstants.RIGHT);
if (row== table.getRowCount()-1) {
setForeground(Color.BLACK);
setBackground( Color.RED );
setFont(fontTotale);
}else if(row != table.getRowCount() && column !=3){
setForeground( Color.BLACK );
setBackground(new Color(200, 200, 200));
setFont(UtilitySwing.getTableFont());
}else if(row != table.getRowCount()-1 && column ==3){
//verifico il valore se negativo rosso
//se positivo blu
String valore = value.toString();
if(valore.startsWith("-")){
setForeground(Color.red);
setFont(fontNegativo);
}else{
setForeground(Color.blue);
setFont(fontNegativo);
}
}
setText(value != null ? value.toString() : "<null>");
return this;
}
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
setOpaque(true);
if (row== tree.getRowCount()-1) {
setForeground(Color.BLACK);
setOpaque(true);
setBackground( Color.RED );
setFont(fontTotale);
}else if(row != tree.getRowCount()){
setForeground( Color.BLACK );
setBackground(new Color(200, 200, 200));
setOpaque(true);
setFont(UtilitySwing.getTableFont());
}
setText(value != null ? value.toString() : "<null>");
return this;
}
}
这是创建 JXTreeTable 的代码:
public JTreeTable(){
JXTreeTable talbe = new JXTreeTable();
talbe .setTreeTableModel(new RandomTextTreeTableModel(listaConti));
talbe .setDefaultRenderer(Object.class, new CustomTreeTableSpeseXCategoriaSpese());
talbe .setTreeCellRenderer(new CustomTreeTableSpeseXCategoriaSpese());
}
我想要这个: 1) 显示完整的文本 2)您如何从图像中看到,我想在第一列设置背景颜色灰色。我该如何解决?
编辑
帖子不重复,因为在分割帖子中有 JTree,但在我的帖子中,我有 JXTreeTable,它是不同的
【问题讨论】:
-
Color row in JTree 的可能副本
-
在那个帖子里有一个JTree,在我的帖子里有一个JXTreeTable
-
是的,没错,但该解决方案也可能适用,或者至少可以为您指明正确的方向
-
对不起,我不知道如何解决这个问题
-
这确实不是重复的,JXTreeTable 有一个用于层次列的硬连线渲染器,这意味着自定义渲染器没有效果。
标签: java swing jxtreetable