Neuzeichnen des Rechtecks

Status
Nicht offen für weitere Antworten.
G

Gast

Gast
Hallo

Habe hier ein kleines Verständnis Problem.
Möchte ein kleines Rechteck auf einem jPanel zeichnen,
Dafür habe ich die paint Methode überschrieben.

Rechteck wird auch gezeichnet,beim minimieren und maximieren
bleibt das Rechteck erhalten.Nur wenn ich es aus dem dem bereich rausschiebe oder
ein Fenster darüberlege ist mein schönes Rechteck verschwunden.
könnt ihr mir weiterhelfen.

Danke.

Code:
public void paint(Graphics g)
  {
   super.paint(g);
   g.setColor(Color.BLUE);
   g.drawRect(100,100,100,200);
   }
 

L-ectron-X

Gesperrter Benutzer
Wenn du mit Swing-Komponenten arbeitest, musst du statt der paint()- die paintComponent()-Methode überschreiben.
 
G

Gast

Gast
Die Methode

Code:
public void paintComponent(Graphics g)
wird bei mir nicht ausgeführt,habe ein Stop gesetzt

hast du noch eine Idee.
 
G

Gast

Gast
Da ist nicht viel Code zum zeigen.

Also einfach mit Netbeans ein Frame erstellt und ein JPanel draufgelegt.
und dann die Paint Methode überschrieben.

Oder fehlt mir irgendeine event Methode wo meine repaint reinkommt ?


Code:
public class NeuJFrame extends javax.swing.JFrame {
    
    /** Creates new form NeuJFrame */
    public NeuJFrame() {
        initComponents();
    }
    
   public void paint(Graphics g)
  {
   super.paint(g);
   g.setColor(Color.BLUE);
   g.drawRect(100,100,100,200);
   System.out.println("Hallo Paint");
   }
  
   public void paintComponent(Graphics g)
  {
   super.paintComponents(g);
   g.setColor(Color.BLUE);
   g.drawRect(100,100,100,200);
   System.out.println("Hallo Components");
   }

  public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NeuJFrame().setVisible(true);
            }
        });
    }
 
B

Beni

Gast
Gast hat gesagt.:
Möchte ein kleines Rechteck auf einem jPanel zeichnen,

Code:
public class NeuJFrame extends javax.swing.JFrame {

Bemerkst du den Unterschied zwischen dem was du sagst, und dem was du machst?

Auf einem JFrame hat es immer auch andere Components. Aus Optimierungsgründen kann es passieren, dass diese Components neu gezeichnet werden, nicht aber das JFrame. Dann sind deine Rechtecke weg...

Die beste Lösung: zeichne tatsächlich auf einem JPanel (und benutze dort die "paintComponent").
 

Leroy42

Top Contributor
... und bei Swing-Komponenten (J...) immer nur paintComponent-überschreiben,
Code:
paint(Graphics g)
ruft paintComponent auf und sollte nie überschrieben werden



...(es sei denn man weiß genau was man macht)
 
G

Gast

Gast
Begreife es trotzdem noch nicht ganz.

Warum legt man den ein JPanel auf ein jFrame ?
Ich möchte später auch Buttons anlegen.

Kann man den auch ohne jFrame ein Dialog Fester erstellen ?

Dank euch allen.
 

Leroy42

Top Contributor
Weil JFrame eigenständige Fenster sind in deren contentPane die JPanel(s) reinkommen.

Dialoge sind auch eigenständige Fenster
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben