# TableCellRenderer: JLabel-Background in JPanel



## Sjoeren (6. Mrz 2009)

Ich habe ein Tabelle mit einem eigenen TableCellRenderer. 
Mit diesem Renderer wir ein Icon und Label in der Zelle wiedergegeben.

Nun möchte ich dem JLabel eine andere Hintergrundfarbe als dem Jpanel geben. Aber das geht anscheinend nicht.

Hier ein Codeauszug!

```
private class test implements TableCellRenderer{
        public LinkedHashMap<String, String> m_map = new LinkedHashMap<String, String>();

        private JPanel panel = new JPanel(new BorderLayout());
        private JLabel label = new JLabel("", JXLabel.CENTER);
        private JLabel arrow = new JLabel((Icon) null, JXLabel.CENTER);
        LinkedHashMap<Integer, LinkedHashMap<String, String>> positions;

        private Icon in_frontIcon = new ImageIcon(getClass().getResource("/InoPro/icons/16x16/actions/agt_back.png"));

        public test() {
            panel.add(label);
            panel.add(arrow, BorderLayout.EAST);
        }

        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

            //Hintergrund
            panel.setBackground(Color.cyan);
            
            label.setText("-");
            label.setOpaque(true);
            label.setBackground(Color.RED);
            label.setBorder(new LineBorder(Color.BLACK, 1));

            arrow.setIcon(in_frontIcon);

            return panel;
        }
    }
```


----------



## GilbertGrape (6. Mrz 2009)

Ich glaube, da das Label quasi nur aus dem Text besteht, sieht man die Hintergrundfarbe nicht


----------



## Sjoeren (6. Mrz 2009)

Was müsste ich dann machen damit das auf angezeigt wird?


----------



## GilbertGrape (6. Mrz 2009)

Ich verstehe nicht so ganz was du möchtest.
Das Label liegt doch auf dem Panel. Also musst du dem Panel die Farbe geben, die hinter dem Label sein soll.


----------



## Sjoeren (6. Mrz 2009)

Ich will dem JLabel eine andere Hintergrundfarbe geben als dem JPanel
ich hab auch schon den Aufbau Probiert

Jpanel --> Farbe ROT
- Icon
- Jpanel --> Farbe GREEN
-- JLabel

Aber auch hier wird die Hintergrundfarbe vom 2. Jpanel nicht angezeigt.


----------



## GilbertGrape (6. Mrz 2009)

Ich glaube, du musst mal den Code posten.
Ich hab jetzt das hier probiert:
[highlight=Java]class Tester extends JFrame {

    public Tester(){
        super();
        JPanel aussen = new JPanel();
        aussen.setLayout(new FlowLayout());
        JPanel innen = new JPanel();
        JLabel text = new JLabel("Test");

        aussen.setPreferredSize(new Dimension(100, 100));
        aussen.setBackground(Color.blue);
        innen.setPreferredSize(new Dimension(50,50));
        innen.setBackground(Color.RED);
        innen.add(text);
        aussen.add(innen);

        this.add(aussen);

    }

    public static void main(String...args){
        Tester tester = new Tester();
        tester.pack();
        tester.setVisible(true);
    }

}[/highlight]

Da hat das innere Panel mit dem Text eine andere Farbe als das äußere.


----------



## Beni (6. Mrz 2009)

JLabels sind oft durchsichtig, mit der Methode "setOpaque" kann man das allerdings umschalten. Danach haben sie einen Hintergrund wie jede andere Component auch.


----------



## Sjoeren (6. Mrz 2009)

OK, Sorry fües Blöd Fragen.

Er liegt am L&F

Substance mal wieder :-(


----------

