Cellrenderer изменить цвет фона ячейки и изменить формат значения, выравнивание - PullRequest
0 голосов
/ 15 января 2019

Я использую cellRenderer, чтобы изменить цвет фона ячеек (столбцов), но он также изменяет формат значения ячейки как столбцы LEFT на изображении, я бы оставил формат по умолчанию в качестве столбца RIGHT на изображении, вот мой простой код:

DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setBackground(Color.ORANGE);
mytable.getColumnModel().getColumn(3).setCellRenderer( centerRenderer );

Большое спасибо вот изображение как описание выше

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы хотите создать пользовательский рендер, который позволит вам форматировать данные.

Базовая логика будет выглядеть примерно так:

public class IntegerRenderer extends DefaultTableCellRenderer
{
    private Format formatter = new NumberFormage.getIntegerInstance();

    public IntegerRenderer()
    {
        setHorizontalAlignment( SwingConstants.RIGHT );
    }

    public void setValue(Object value)
    {
        //  Format the Object before setting its value in the renderer

        try
        {
            if (value != null)
                value = formatter.format(value);
        }
        catch(IllegalArgumentException e) {}

        super.setValue(value);
    }
}

Затем вы просто устанавливаете цвет фона рендерера.

Ознакомьтесь с Рендерингом табличного формата для многократно используемых классов, которые упрощают создание пользовательских рендеров для чисел, процентов, дат и т. Д.

0 голосов
/ 15 января 2019

Лучше всего расширить BasicTableCellRenderer, чтобы добавить эти специфические стили обратно, так как basic будет иметь минимальные минимальные стили.

class CustomTableCellRenderer extends BasicTableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
            int row, int column) {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        // Add style logic here    

        return this;
    }
}
...