# JFrame und paint(Graphics g)



## Roar (1. Jan 2004)

Hallo,
irgendwie komm ich nicht weiter, denn ich hab folgendes Problem:
ich hab einen JFrame normal instantiiert ( nix mit extends JFrame, super(String s); )
und dann in der gleiche nklasse meine methode public void paint(Graphics g) die ja normalerweise aufgerufen wird, beim zeichnen des fensters. aber meine wird nicht aufgerufen... hier der nötige code:

```
class deskWnd implements ActionListener // ob man von JFrame ableitet is egal - bringt nix
{ //...
public deskWnd()
{
//...
JFrame wnd = new JFrame("frame");
//... alles wie gehabt
wnd.getContentPane().add(desktop,BorderLayout.CENTER); // desktop = JDesktopPane()
}
public void paint(Graphics g)
{
System.out.println("paint()"); / zur kontrolle
g.setFont(new Font("Serif",Font.BOLD,36));
g.drawString("bla",100,100);
}
}
```
so, aber die methode wird nicht aufgerufen.. auch nicht bei wnd.validate() oder wnd.repaint()
why??

edit:
komisch.. jetzt hab ich manuell die methode paint aufgerufen, mit paint(wnd.getGraphics()); da sah man kurz beim laden den text, dann verschwand er aber wieder!?!? komisch..


----------



## Kerberus (1. Jan 2004)

Du musst im Konstruktor folgendes hinzufügen:

```
JFrame wnd = new JFrame("frame");

/* dann kommen Sachen wie Layout etc
am Schluss fügst du noch folgendes ein:*/

wnd.show(); // jetzt sollte der Frame angezeigt werden.
```


----------



## Roar (1. Jan 2004)

?? der frame wird doch angezeigt (setVisible(true); )das war überhaupt nicht mein problem. dass die graphics von pain() nicht angezeigt wurden war mein problem, das habe ich aber auch hscon gelöst ( schon das zweite heute was ich ins forum schreibe und selber löse  :roll: )
so gehts:
wnd.update(wnd.getGraphics());
paint(wnd.getGraphics());
ich weiß zwar net warum aber es geht 

hmm geht doch irgendwie nicht... wenn ich versuche ne linie zu malen isses das gleiche problem.. doer wenn ich einen neuen internalframe öffne, dann verschwindet der text wieder


----------



## Kerberus (1. Jan 2004)

Sorry, dass ich dein Problem falsch verstanden habe. Eine Frage:
Warum zeichnest du nicht auf ein JPanel?


----------



## Roar (1. Jan 2004)

? 
1. wieso soltle ich, wenn ich doch auch so zeichnen kann.
2. geht nichjt. ich hab ne JDesktopPane in meinem frame, und die wollte ich "überzeichnen"...


----------



## Roar (2. Jan 2004)

juhuu!!
problem is nach ca 4 stunden langer schweißtreibender, ausnahmsweise ätzender, java swing programmierung gelöst.. dabei wars so einfach:

```
class VirtualDesktop extends JDesktopPane
{
protected void paintComponent(Graphics g)
{
g.setFont(new Font("Serif",Font.BOLD,36));
g.drawString("GNAAA!!!",100,100);
}
}
```
und das wars. einfach instantiieren, jinternalframes adden, und zur contentpane adden...


----------

