カスタム DefaultTreeCellRenderer を設定したいと思います。
だから私はこのクラスを構築しました:
class CustomTreeTableSpeseXCategoriaSpese extends DefaultTreeCellRenderer {
/**
*
*/
private static final long serialVersionUID = 4842418316518803090L;
private Font fontTotale = new Font("Verdana", Font.BOLD, 12);
private Font fontNegativo = new Font("Verdana", Font.BOLD, 12);
private int numeroRighe;
CustomTreeTableSpeseXCategoriaSpese(int numeroRighe){
this.numeroRighe=numeroRighe;
}
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean selected,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) {
// Allow the original renderer to set up the label
Component rendererComponent = super.getTreeCellRendererComponent(
tree, value, selected,
expanded, leaf, row,
hasFocus);
rendererComponent.setBackground( Color.WHITE );
if (row== this.numeroRighe-1) {
rendererComponent.setForeground(Color.BLACK);
rendererComponent.setBackground( Color.RED );
rendererComponent.setFont(fontTotale);
}else if(row != this.numeroRighe/* && column !=3*/){
rendererComponent.setForeground( Color.BLACK );
rendererComponent.setBackground(new Color(200, 200, 200));
}else if(row != this.numeroRighe-1 /*&& column ==3*/){
}
return rendererComponent;
}
}
このコードでは、背景色、前景色が見えません。別の質問は、異なる列に異なるレンダラーを設定することは可能ですか? 最初の 3 列には背景色と前景色を設定し、他の列には別のレンダラーを設定します。
編集
このコードでは、次のような JXTreeTable を確認できます。
しかし、次のように TreeTable を表示したい:
編集
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);
setBackground(isSelected ? new Color(83,142,213) : Color.white);
setForeground(isSelected ? Color.white : Color.black);
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) {
//rendererComponent.setBackground( Color.WHITE );
if (row== tree.getRowCount()) {
setForeground(Color.BLACK);
setOpaque(true);
setBackground( Color.RED );
setFont(fontTotale);
}else if(row != tree.getRowCount()/* && column !=3*/){
setForeground( Color.BLACK );
setOpaque(true);
setBackground(new Color(200, 200, 200));
}else if(row != tree.getRowCount()-1 /*&& column ==3*/){
//verifico il valore se negativo rosso
//se positivo blu
/*String valore = super.getValueAt(row, column).toString();
if(valore.startsWith("-")){
rendererComponent.setForeground(Color.red);
rendererComponent.setFont(fontNegativo);
}else{
rendererComponent.setForeground(Color.blue);
rendererComponent.setFont(fontNegativo);
}*/
}
setText(value != null ? value.toString() : "<null>");
return this;
}
}