Panel einfärben funktioniert nicht
-
Hallöchen,
ich habe hier folgende GUI:
http://www.imagebanana.com/view/xpfw07kw/Clipboard01.jpgAuf der linken Seite gibt es eine Tabelle (AbstractTableModel), die man filtern kann. Durch die Filterung wird die Tabelle natürlich kleiner und hier liegt das Problem. Dort, wo alte Eintragungen waren, klafft jetzt eine weiße Lücke und das Panel darunter ist grau. Um diesen Schönheitsfehler zu beseitigen, wollte ich einfach das Panel darunter weiß färben, aber warum auch immer, will es einfach nicht funktionieren.
Könnt ihr mir vielleicht sagen wie ich das richtig mache?
Hier der Code:
private void buildLeftContainer() { leftContainer = new JPanel(); leftContainer.setLayout(new BorderLayout()); filterButton = new JButton("Filtereinstellungen..."); restore = new JButton("Filter verwerfen"); JPanel buttonPanel = new JPanel(new FlowLayout()); buttonPanel.add(filterButton); buttonPanel.add(restore); leftContainer.add(buttonPanel, BorderLayout.NORTH); protMod = new ProtocolModel(); macroTable = new JTable(protMod); listPanel = new JScrollPane(macroTable); leftContainer.add(listPanel, BorderLayout.CENTER); add(leftContainer); filterButton.addActionListener(this); restore.addActionListener(this); macroTable.addMouseListener(this); }
Folgendes habe ich versucht:
listPanel.setBackground(Color.WHITE); // sollte eigentlich funktionieren - dachte ich zumindest leftContainer.setBackground(Color.WHITE); // das ist sowieso Quatsch, weil da das listPanel drüberliegt
Ich habe auch schon versucht die beiden Panels vorher mit setOpaque(true) einzustellen, hat aber auch nichts gebracht.
Wenn ich allerdings das buttonPanel oben einfärben will, geht das ohne Probleme. Das scheint also denke ich mal irgendwas mit der Tabelle zu tun zu haben. Den Tabellenhintergrund kann ich färben wie ich will. Theoretisch könnte ich also die Tabelle einfach so grau färben wie das Panel, aber das will ich lieber nicht machen.
-
Hat sich erledigt.
Für alle Interessierten hier die Lösung:
listPanel.getViewport().setBackground(Color.WHITE);
Man muss sich einfach nur den Viewport holen, bevor man das Scrollpane färben kann.