У меня есть JXTreeTable, и у меня есть пользовательский рендеринг.Как установить цвет фона первого столбца 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) Как вы можете видеть, из изображений, я хочу установить цвет фона серым во всех первых столбцах. Как я могу ее исправить?
EDIT
Сообщение не дублировать, потому что в segnalation пост есть JTree, но в моем посте, я JXTreeTable, он отличается
Возможный дубликат [Цветная строка в J Дерево] (http://stackoverflow.com/questions/26724913/color-row-in-jtree) –
В этом посте есть JTree, в моем посте есть JXTreeTable – bircastri
Да, это правда, но это решение может также применимо или, по крайней мере, может указывать на вас в правильном направлении. –