Neuzeichnen des Rechtecks

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
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);
   }
 
Wenn du mit Swing-Komponenten arbeitest, musst du statt der paint()- die paintComponent()-Methode überschreiben.
 
Die Methode

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

hast du noch eine Idee.
 
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);
            }
        });
    }
 
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").
 
... 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)
 
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.
 
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.

Zurück
Oben