# Problem mit setBackground



## Gast (17. Mai 2005)

Hallo zusammen,

ich hab in kleines Problem mit der Methode setBackground. In meinem Programm will ich die 
Hintergrundsfarbe ändern. Das klappt auch, wenn ich nun aber die größe meines Frames ändere
dann springt auch die Hintergrundsfarbe wieder zurück (Defaulteinstellung). Ist das ein Fehler oder ist 
das halt so?
Hier der Code


```
import java.awt.*;
import javax.swing.*;

public class SubWin extends JFrame  {

  public SubWin(int x, int y, String title)  {
    super(title);
    
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    setSize(x, y);
    setBackground(Color.GRAY);
    
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    setLocation((d.width - getSize().width)/2, (d.height - getSize().height)/2);
  }

  public static void main(String[] args)  {
    SubWin w = new SubWin(300, 200, "Frame");
  }
}
```
[/code]


----------



## TheSunToucher (17. Mai 2005)

So geht's:


```
import java.awt.*;
import javax.swing.*;

public class SubWin extends JFrame {

	public SubWin(int x, int y, String title) {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.getContentPane().setBackground(Color.RED);
		setSize(x, y);
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation((d.width - getSize().width) / 2, (d.height - getSize().height) / 2);
		setVisible(true);
	}

	public static void main(String[] args) {
		SubWin w = new SubWin(300, 200, "Frame");
	}
}
```

Du solltest "this.getContentPane()" benutzen um die Background-Color zusetzen oder Elemente hinzuzufügen...


----------



## Gast (17. Mai 2005)

Danke für deine Hilfe jetzt geht es.
Wenn ich erst getContentPane() aufrufen muss wieso funktioniert dann setBackground() ohne das sich der Compiler mit einer Fehlermeldung meldet?


----------



## Beni (17. Mai 2005)

Ein JFrame besteht aus verschiedenen Schichten. Das ContentPane ist die oberste. Mit "setBackground" alleine, setzt du die Farbe einer anderen Schicht (der tiefsten). Das ist kein Fehler (deshalb reklamiert der Compiler auch nicht), aber man sieht es auch nicht richtig, weil es ja noch was darüber gibt.


----------



## Roar (17. Mai 2005)

weils kein syntax/programmierfehler ist sondenr logischer fehler. nur weil man was kopmilieren kann heisst das noch lange nicht dass das auch funktioniert


----------



## Guest (17. Mai 2005)

Ok danke für eure Hilfe. Die logischen Fehler hab ich auch schon schmerzlich zu spüren bekommen  :?


----------

