Swing Hintergrundfarbe ändern

  • Themenstarter Themenstarter wda
  • Beginndatum Beginndatum
W

wda

Gast
Hallo,
ich will eine Tabelle darstellen. Inhalt is dynamisch.
Wenn Fenster groß und Tabelle noch klein ist wird unten alles grau.
Ich will an dieser Stelle weiß bzw. eine andere Farbe haben.
Hier ist ein einfaches Beispiel.
Java:
import java.awt.BorderLayout;
import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JPanel;
public class JTableCreatingDemo {
  public static void main(String args[]) {
    JPanel hP = new JPanel();
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Object rowData[][] = { { "Row1-Column1", "Row1-Column2", "Row1-Column3" },
        { "Row2-Column1", "Row2-Column2", "Row2-Column3" } ,
        { "Row3-Column1", "Row3-Column2", "Row3-Column3" } ,
        { "Row4-Column1", "Row4-Column2", "Row4-Column3" } };
    Object columnNames[] = { "Column One", "Column Two", "Column Three" };
    JTable table = new JTable(rowData, columnNames);

    JScrollPane scrollPane = new JScrollPane(table);
    frame.add(scrollPane, BorderLayout.CENTER);
    frame.setSize(500, 500);
    frame.setVisible(true);
    frame.pack();

  }
}

Wenn ich nur ein JButton platziere, kann ich mit
Java:
frame.setBackground(new Color(0xFF0000));
die Hintergrundfarbe setzen.
Wie geht das bei einer Tabelle?
 
Deine JTable liegt in einem ScrollPane. Du müsstest also einfach dessen Hintergrundfarbe ändern.
Probier mal sowas:
Java:
scrollPane.getViewport().setBackground(Color.RED);
 
Java:
scrollPane.getViewport().setOpaque(false);
scrollPane.setOpaque(false);
//...
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.getContentPane().setBackground(Color.RED);

P.S. Ich würde immer Komponenten der ContentPane adden, nicht dem Frame selbst, auch wenn es hier keinen Unterschied macht.
 
Das Graue ist eine Teilkomponente der JScrollPane, nämlich der Viewport. Dessen Farbe kann man z.B. so ändern:
Code:
scrollPane.getViewport().setBackground(...)
 

Zurück
Oben