setBackground(.)

Status
Nicht offen für weitere Antworten.

Evolver

Bekanntes Mitglied
Ach, mein Java scheint schon arg eingerostet zu sein. Ichwollte alles mal wieder auffrischen und habe ein Problem beim Setzen der Hintergrundfarbe:
Code:
import javax.swing.JFrame;

class Rechner extends JFrame
{
	private Model mData;
	private View mGfx;
	private Control mCtrl;
	
	public Rechner()
	{
		mData = new Model();
		mGfx = new View();
		mCtrl = new Control();
		
		getContentPane().add(mGfx);
		addMouseListener(mCtrl.mMA);
		
		this.setSize(320,240);
		this.setLocation(200, 200);
		this.setTitle("Rechner");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}
	
	public static void main(String pArg[])
	{
		Rechner tProgram = new Rechner();
	}
}


//==============================================

import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JPanel;


class View extends JPanel
{
	public View()
	{
		setBackground(Color.yellow);
	}
	
	public void paintComponent(Graphics pGfx)
	{
		super.paintComponents(pGfx);
		int w = getWidth();
		int h = getHeight();
		pGfx.setColor(Color.black);
		pGfx.drawRect(20,20,w-40,h-40);
	}
}

// ...

Die Hintergrundfarbe wird in Zeile 43 gesetzt. Leider bleibt der Hintergrund in der Standardfarbe, obwohl ich den Code mehr oder weniger aus 'nem alten Programm übernommen habe. Wo liegt der Fehler?
 

Evolver

Bekanntes Mitglied
In dem alten Programm funktioniert es aber auch ohne! Und wenn ich das nun im neuen Programm einfüge, dann ändert das am Ergebnis leider garnichts.

Code:
public View()
{
	setOpaque(true);
	setBackground(Color.yellow);
}

Immernoch ist der Hintergrund in Standardfarbe.
 

tini

Bekanntes Mitglied
du hast in der paintComponent()-Methode im Aufruf der Super-Klasse ein "S" zuviel. Du musst
Code:
super.paintComponent(pGfx);
aufrufen. Dann funktioniert es auch
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben