JFrame und paint(Graphics g)

  • Themenstarter Themenstarter Roar
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

Roar

Gast
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:
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..
 
Du musst im Konstruktor folgendes hinzufügen:
Code:
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.
 
?? 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 🙁
 
Sorry, dass ich dein Problem falsch verstanden habe. Eine Frage:
Warum zeichnest du nicht auf ein JPanel?
 
?
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"...
 
juhuu!!
problem is nach ca 4 stunden langer schweißtreibender, ausnahmsweise ätzender, java swing programmierung gelöst.. dabei wars so einfach:
Code:
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...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben