# JFrame => paint überschreiben



## ich² (1. Jun 2006)

Hallo Forum,

meine Klasse erbt von JFrame und überschreibt dessen Paint-Methode. Das klappt auch wunderbar, nur werden jetzt Componenten, die dort eigentlich angezeigt werden sollen nicht mehr angezeigt. Was mache ich falsch?

mfg

ich²


----------



## AlArenal (1. Jun 2006)

ich² hat gesagt.:
			
		

> Was mache ich falsch?



Du postest deinen Code nicht und erwartest, dass wir alle wissen was du da gecodet hast... Ich VERMUTE mal, dass du super(...) falsch oder gar nicht benutzt.


----------



## ich² (1. Jun 2006)

Hi,

entschuldigung, ich bin davon ausgeganen dass ich grundlegend etwas falsch machen   . Ich verwende "super()" in der Tat nicht, weiß aber auch nicht wie ich es verwenden muss.

Meine Klasse:


```
public class MyFrame extends JFrame {
...
    public void paint(Graphics g) {

        g.drawImage(background, 0, 0, null);
    }
}
```

andere Klasse:


```
public class TestClass extends MyFrame {
    ...
    public MyFrame() {

        getContentPane().setLayout(new FlowLayout());
        getContentPane().add(new JLabel("Hallo ..."));
        ...
    }
    ...
}
```

ich hoffe du kannst mir jetzt helfen! 

mfg

ich²


----------



## nebu (1. Jun 2006)

Vielleicht hilft dir das weiter click


----------



## thE_29 (1. Jun 2006)

Al hatte Recht 

public void paint(Graphics g) {

        g.drawImage(background, 0, 0, null);
    } 


da fehlt ein super.paint(g); in der ersten Zeile  oder nach dem drawImage, kommt drauf an was du als erstes haben willst!


----------



## ich² (1. Jun 2006)

Hallo ihr zwei ,

das funktioniert leider auch nicht und der Link hiflt mir auch nicht wieder. Ich versuche einen Transparenten Hintergrund zu simulieren. Am besten ich poste mal beide Klassen, vielleicht könnt ihr mir dann weiterhelfen (nicht über die mangelnde Funktionalität und den schlechten/sinnlosen Code wundern, ist ja noch in der Entwicklungspahse  )


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

public class TransWindow extends JFrame implements WindowListener {
	
	private BufferedImage screen = null;
	private BufferedImage background = null;
	private Robot rob = null;
	private Point loc = null;
	
	public TransWindow() {
		
		try {
			rob = new Robot();
		}
		catch (AWTException e) {
			e.printStackTrace();
			System.exit(0);
		}
	}
	
	private void actBackground() {
		
		Dimension size = getSize();
		background = screen.getSubimage((int)loc.getX(), (int)loc.getY(), (int)size.getWidth(), (int)size.getHeight());
		repaint();
	}
	
	private void makeScreenshot() {
		
		screen = rob.createScreenCapture(new Rectangle(getToolkit().getScreenSize()));
	}
	
	public void actTransparent() {
		
		loc = getLocationOnScreen();
		setLocation((int)getToolkit().getScreenSize().getWidth(), (int)getToolkit().getScreenSize().getHeight());
		makeScreenshot();
		actBackground();
		setLocation(loc);
	}
	
	public void paint(Graphics g) {
		
		super.paint(g);
		g.drawImage(background, 0, 0, null);
	}
	
	public void windowActivated(WindowEvent evt) {
		
		actTransparent();
	}
	
	public void windowDeiconified(WindowEvent evt) {
		
		actTransparent();
	}
	
	public void windowOpened(WindowEvent evt) {
		
		actTransparent();
	}
	
	public void windowDeactivated(WindowEvent evt) {
	}
	
	public void windowIconified(WindowEvent evt) {
	}
	
	public void windowClosed(WindowEvent evt) {
	}
	
	public void windowClosing(WindowEvent evt) {
	}
}
```


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

public class TestClass extends TransWindow implements MouseMotionListener, MouseListener {
	
	private JLabel label = null;
	private JLabel label2 = null;
	private Point init = null;
	
	public TestClass() {
		
		label = new JLabel("Zieh mich ...");
		label2 = new JLabel("Mich kannste net ziehen");
		label.setOpaque(false);
		getContentPane().setLayout(new FlowLayout());
		getContentPane().add(label);
		getContentPane().add(label2);
		setVisible(true);
		setSize(400, 400);
		actTransparent();
	}
	
	public static void main(String[] args) {
		
		TestClass tc = new TestClass();
	}
	
	public void mouseMoved(MouseEvent mou) {
	}
	
	public void mouseClicked(MouseEvent mou) {
	}
	
	public void mouseDragged(MouseEvent mou) {
	}
	
	public void mousePressed(MouseEvent mou) {
	}
	
	public void mouseReleased(MouseEvent mou) {
	}
	
	public void mouseEntered(MouseEvent mou) {
	}
	
	public void mouseExited(MouseEvent mou) {
	}
}
```

mfg

ich²


----------

