Как сделать заголовок JTable прозрачным - PullRequest
2 голосов
/ 25 марта 2011

Я хочу создать прозрачный JTable.Сама таблица не создает такой большой проблемы, я реализовал TableModel и TableCellRenderer и установил setOpaque (false) на JTable, включающий JScrollPane и ViewPort JScrollPane.

Теперь таблица корректнорисует заголовки так, как они лежат в JScrollPane, поэтому я установил свой собственный TableCellRenderer для рендеринга заголовка, используя getTableHeader().setDefaultRenderer(new TaskTableHeaderRenderer());.Я хочу, чтобы это было прозрачно, просто с текстом с использованием JLabel.Но, как ни старайся, я не могу этого понять.Renderer, безусловно, обеспечивает прозрачный компонент (я даже пытался использовать только JPanel с setOpaque (false) на нем), и я даже пытался установить setOpaque (false) на JTableHeader и установить прозрачный цвет фона для всех рассматриваемых компонентов.Кажется, ничто не помогает.

Используемый мной LookAndFeel - это PlasticXPLookAndFeel от JGoodies, но я пробовал реализации Metal и Windows Look & Feel безрезультатно.Более того, отладка показывает, что PlasticXPLookAndFeel использует BasicTableHeaderUI без его подкласса.

Так как же добиться прозрачных заголовков таблиц?

Ответы [ 3 ]

3 голосов
/ 17 ноября 2012
Table.getTableHeader().setOpaque(false);
Table.getTableHeader().setBackground(new Color(0,0,0,0.6f));
Table.getTableHeader().setForeground(Color.white);
2 голосов
/ 26 марта 2011

Вы можете сначала создать cellRenderer

public class OpaqueHeader extends DefaultTableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable arg0, Object ob,
            boolean arg2, boolean arg3, int arg4, int arg5) {
        JLabel t = new JLabel(ob.toString());
        t.setOpaque(false);
        t.setForeground(Color.black);
        return t;
    }
}

, а затем в своем объекте JTable

table.getTableHeader().setDefaultRenderer(new OpaqueHeader());
0 голосов
/ 26 марта 2011

возможно переопределить paintBackground () и не вызывать super.paintBackground ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...