Hintergrundfarbe eines Applets ändern

  • Themenstarter Themenstarter AppletHintergr
  • Beginndatum Beginndatum
A

AppletHintergr

Gast
Sowohl mein Browser, als auch das Debugfenster von Netbeans zeigen einen hellblauen Hintergrund meines Applets an.

Da die html Seite, auf der das Applet dargestellt werden soll, aber weißen Hintergrund hat, sollte auch der Hintergrund des Applets weiß sein.
Mein erster Versuch in der init() Methode einfach this.setBackground(Color.white) aufzurufen schlug fehl.
Als nächstes habe ich eine paint Methode mit getBounds() die Größe geholt und die Methode fillRect() aufgerufen. Diese zeichnet zwar den hintergrund weiß, die im Applet enthaltenen JComponents wie JComboBox werden auch übermalt.

Gibt es eine Möglichkeit die Hintergrundfarbe im html File zu definieren oder wie kann man dem Applet die Hintergrundfarbe bestimmen.

Hier kurz mein Code stark vereinfacht

Java:
public class MeinErstesApplet extends JApplet
{
  public void init()
  {
    Polygon pol = new Polygon(50, 100);
    JLabel label = new JLabel("Polygon");
    
    this.add(label, BorderLayout.NORTH);
    this.add(pol, BorderLayout.CENTER);
    
    this.setSize(400, 400);
    this.setVisible(true);
  }
  
  public class Polygon extends JPanel
  {
    ArrayList RectList = new ArrayList();
    
    public Polygon(int x, int y)
    {
      for(int i=0; i<5; ++i)
      {
        RectList.add(new Rect(x*i, y));
      }
    }  
  
    public void paint(Graphics g)
    {
      g.drawImage(img, 0, 0, this);
      for (int i = 0; i < RectList.size(); ++i)
      {
        ((Rect) RectList.get(i)).paint(g);
      }
    }
  }
  
  public class Rect
  {
    int x, y, Width=10, Height=50;
  
    public Rect(int x, int y)
    {
      this.x=x;
      this.y=y;
    }
    
    public void paint(Graphics g)
    {
      g.fillRect(x, y, Width, Height);
    }
  }
}
 
Versuchs so:
Code:
getContentPane().setBackground(Color.WHITE);
(erste Anweisung in der init()-Methode)

Außerdem: In Swing-Komponenten wird nicht die
Code:
paint()
- sondern die
Code:
paintComponent()
-Methode überschrieben.
Es sollte auch vermieden werden, Klassen mit Namen von Klassen aus der Java-Standard-API zu benennen. (Polygon ist aus java.awt)
 
wie mein vorredner bereits sagte, verwendet man bei Swing "paintComponent()" und nicht paint().

Was du dort als vollkommen weiss gesehen hast, "könnte" man im "Grunde" als grafischen Fehler bezeichnen.

Es sollte bei Swing niemals die paint() Methode überschrieben werden.
Warum: Versuch mal nur ein paar Linien so zu zeichnen und du wirst meist das selbe Ergebniss bekommen oder ähnlich nicht befriedigende Ergebnisse.
 

Neue Themen


Zurück
Oben