Problem mit paint Methode und Bild

larry86

Mitglied
Hallo ihr zusammen.
Ich hab ein Problem mit der paint Methode, jedenfalls denke ich, dass der Fehler daher kommt! 😀
Und zwar habe ich eine Klasse, in der im im Konstruktor eine Methode aufrufe um die GUI zu initialisieren und zu bauen. Dann habe ich einen Thread, der gestartet wird und Bilder lädt. (Bzw. das Laden habe ich nun ohne Thread gemacht, zum testen). Ich wollte ich eines der Bilder in der GUI, in der ja Buttons usw. schon sind, hinzufügen. Das habe ich so gemacht:
Java:
    @Override
    public void paint(Graphics g){
        g.drawImage(arImg[0], 100, 50, this);
    }

Nun ist nur der Effekt, dass ich beim starten der Anwendung nur noch ein schwarzes Fenster sehe mit dem Bild, sonst aber nichts.😱
Weiß jemand vielleicht zufällig woran das liegt? Entferne ich die paint Methode wieder, wird die GUI ganz normal angezeigt, aber nun halt ohne Bild.;(

Danke, Gruß Larry
 
Ähhhm, ich hab versucht sie zu überschreiben, aber das akzeptiert er nicht.
Liegts vielleicht daran, dass ich das extends von Jframe mache?
Java:
public class MyView extends JFrame implements IMyView  {

public MyView(IMyModel model) {
        this.model = model;
        loadpics();
        initComponents();
        setVisible(true);
...
 
JFrame besitzt kein paintComponent()
und wenn würde ich die Methode nicht überschreiben, sondern ein JComponent oder JPanel in den Frame einfügen und deren paintComponent überschreiben
 
Oh gut! Ich hab nämlich ein JPanel erzeugt in dem alle meine GUI Elemente sind. Sinnvoller wäre wahrscheinlich nur ein JPanel, in dem dann meine Bilder sind, die ich anzeigen will. Wie kann ich die Methode des JPanels überschreiben?
 
Java:
public class MyPanel extends JPanel{

public MyPanel (){

// init widgets...
}

public void paintComponent(Graphic g){
super.paintComponent(Graphic g); -->wichtig
}
}
 
Gibt es auch eine Möglichkeit, immernoch extends JFrame zu lassen und die Methode paintComponent von einem eingefügten JPanel zu überschreiben?
Also:
Java:
public class MyView extends JFrame implements IMyView  {
 
public MyView(IMyModel model) {
        this.model = model;
        loadpics();
        initComponents();
        setVisible(true);
}
private void initComponents() {
		plBody = new JPanel();
...
}
...
Kann ich irgendwie die Methode paintComponent von plBody überschreiben?


Danke, Gruß Larry
 
entweder eigene klasse von JPanel abgeleitet erstellen

Java:
plBody = new MyJPanel();

oder

Java:
 plBody = new JPanel()
{
	@Override
	protected void paintComponent(Graphics g) 
	{

	}
}
 

Zurück
Oben