paintComponent wird nicht dargestellt

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo zusammen. Ohne lang um den heissen Brei herum zu reden komme ich direkt zu meinem Problem. Ich moechte ein Minispiel programmieren bei dem sich ein unbemannter Helikopter durch einen Garten steuern lassen kann. Der Garten ist mit Radarposten ausgestattet. Die Radarposten werden allerdings nicht angezeigt. Hier mal zur Ubersicht das Klassendiagramm:


Das ganze basiert auf einem MVC-Pattern, sodass ich spaeter einfach neue Views hinzufuegen kann, etwa um die aktuelle Geschwindigkeit des Helikopters anzuzeigen.

Nun, ich hab keine Ahnung warum die Radarposten nicht gezeichnet werden. :(

hier mal der Source:

Code:
import javax.swing.JPanel;
import java.awt.BorderLayout;

public class Mainpanel extends JPanel
{
    public Mainpanel()
    {
        setLayout(new BorderLayout());
        GardenPanel gp = new GardenPanel(400, 300, 7);
        GardenModel gm = new GardenModel(gp);
        add(gp, BorderLayout.CENTER);
        add(new ControllPanel(), BorderLayout.SOUTH);
                
    }
}

Code:
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.Observable;

public class GardenModel extends Observable
{
    private ArrayList<Radarstation> radarList;
    private int dx, dy;
    private Dimension gardenSize;
    
    public GardenModel(GardenPanel gp)
    {
        this.gardenSize = gp.getSize();
    }        
}

Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.util.ArrayList;
import javax.swing.JPanel;

public class GardenPanel extends JPanel
{
    private int x, y, aantalRadaren;
    private ArrayList<Radarstation> radarList;
    private Dimension gardenSize;
    
    public GardenPanel(int x, int y, int aantalRadaren)
    {
        gardenSize = new Dimension(x, y);
        this.aantalRadaren = aantalRadaren;
        
        radarList = new ArrayList<Radarstation>();
        
        setSize(x, y);
        setVisible(true);        
        setBackground(Color.GREEN);
        System.out.println("reached GardenPanel Constructor");
        generateRadaren();
    }
    
    public void generateRadaren()
    {
        System.out.println("reached generateRadaren");
        Dimension d = new Dimension();
        Point p = new Point();            
        int x = (75 + ((int) Math.random() * 75));
        int y = (75 + ((int) Math.random() * 75));            

        d.setSize(x, y);
        
        if(radarList.isEmpty())
        {                        
            x = (int) (Math.random() * gardenSize.getWidth()); 
            y = (int) (Math.random() * gardenSize.getHeight());                        
            p.setLocation(x, y);                        
            
            radarList.add(new Radarstation(p, d, Color.BLUE));
        }
        
        else if(!radarList.isEmpty());
        {
            for(int i = 0; i < aantalRadaren; i++)
            {
                Radarstation rs = radarList.get(i);
                
                x = (int) (rs.getPosition().getX() +  (Math.random() * 200));
                y = (int) (rs.getPosition().getY() + (Math.random() * 100) - 50);                                
                p.setLocation(x, y);
                
                x = (75 + ((int) Math.random() * 75));
                y = (75 + ((int) Math.random() * 75));            
                d.setSize(x, y);
                
                Radarstation rsNew = new Radarstation(p, d, Color.BLUE);
                radarList.add(rsNew);
                System.out.println("Radar" + (i + 2) + "geadded");
            }
        }
    }
    
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        for(Radarstation r: radarList)
        {
            r.paint(g);
        }
    }
    
    public Dimension getSize()
    {
        return new Dimension(x, y);
    }
}

Code:
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Color;
import java.awt.Graphics;

public class Radarstation
{
    private Point position;
    private Dimension size;
    private Color color;
    
    public Radarstation(Point pos, Dimension size, Color color)    
    {
        this.position = pos;
        this.size = size;
        this.color = color;
    }
    
    public Dimension getSize()
    {
        return size;
    }
    
    public Point getPosition()
    {
        return position;
    }
    
    public void setPosition(Point p)
    {
        position = p;
    }
    
    public void paint(Graphics g)
    {
        g.setColor(color);            
        System.out.println("posX: " + (int) position.getX() + "  posY: "+ (int) position.getY() +  "  scaleX: " + 
              (int) size.getWidth() + "  scaleY: " + (int) size.getHeight());

        g.fillOval((int) position.getX(), (int) position.getY(), (int) size.getWidth(), (int) size.getHeight());
        
    }
    
    public void setSize(Dimension d)
    {
        size = d;
    }
}
 

kleiner_held

Top Contributor
1. In GardenPanel.generateRadaren() nutzt Du immer die gleichen Point und Dimension Objekte, d.h. du schiebst alle deine Radarstationen immer weiter nach rechts und unten. Jede Radarstation soll einen eigenen Punkt und eine eigene Dimension bekommen.

2. Zeile 34 & 35
Code:
int x = (75 + ((int) Math.random() * 75));
Ergibt immer 75, da der Teil hinter dem + fast immer 0 ist.

3. Zeile 48 Böse Falle :
Code:
else if(!radarList.isEmpty());
Da ist ein Semikolon hinter dem if, soll bestimmt nicht so sein. Dadurch wird der Block dahinter immer ausgeführt.

4. Ich würde Radarstation von JComponent erben lassen, dann verwaltet JComponent die Koordinaten, Größe und Farbe für Dich. Du musst dann nur paintComponent() überschreiben und im GardenPanel für jede Radarstation einmal add(radarStation) aufrufen.
 
G

Guest

Gast
Danke Leute, ich werds machen! :D
Das mit der Positionsberechnung war n echt dummer Fehler, genauso die Semikolongeschichte. Aber ich versteh das Resultat des ganzen nicht. Eigentlich sollte doch der Compiler einen Fehler auswerfen, da hinter einer Abfrage doch kein Komma stehen darf...
Ich fahr jetzt erstmal ins Wochenende und hoffe dann Dienstag das Projekt fertig gestellt zu haben. Danke für die Hilfe, keine Ahnung was gestern mit mir los war dass ich das mit dem Semikolon... :autsch:

beste Grüße,
Gast
 

Wildcard

Top Contributor
Anonymous hat gesagt.:
Eigentlich sollte doch der Compiler einen Fehler auswerfen, da hinter einer Abfrage doch kein Komma stehen darf...
Ist ja kein Komma, sondern ein Semikolon und das ist erlaubt.
In einer vernünftigen IDE kann sich das aber als Warnung anzeigen lassen :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D PaintComponent wird nicht aufgerufen AWT, Swing, JavaFX & SWT 3
S Image wird nicht (immer) in paintComponent gezeichnet? AWT, Swing, JavaFX & SWT 6
kodela Swing paintComponent() wird nicht aufgerufen AWT, Swing, JavaFX & SWT 19
E WARUM wird paintComponent nicht aufgerufen? AWT, Swing, JavaFX & SWT 12
C Bei Skalierung wird paintComponent() nicht aufgerufen,warum? AWT, Swing, JavaFX & SWT 4
R paintComponent wird anscheinend nicht aufgerufen AWT, Swing, JavaFX & SWT 2
A paintComponent() wird nicht aufgerufen! AWT, Swing, JavaFX & SWT 8
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
B AWT paintComponent wird nur 2 mal ausgeführt?! AWT, Swing, JavaFX & SWT 5
propra Wieso wird paintComponent() beim Start 2 malausgeführt? AWT, Swing, JavaFX & SWT 4
M wann wird paintComponent() aufgerufen AWT, Swing, JavaFX & SWT 4
H new Operator in paintComponent - Speicherprobleme vorprogrammiert? AWT, Swing, JavaFX & SWT 2
frager2345 Warum paintComponent hier und nicht paint AWT, Swing, JavaFX & SWT 2
L paintComponent in Panel eines Borderlayouts hinzufügen AWT, Swing, JavaFX & SWT 3
G update, paintComponent AWT, Swing, JavaFX & SWT 1
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
L Swing repaint() ruft paintComponent(g1d) nicht auf AWT, Swing, JavaFX & SWT 12
C Objekt an paintComponent weitergeben AWT, Swing, JavaFX & SWT 1
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
N JButton über benutzerdefinierte paintComponent setzen AWT, Swing, JavaFX & SWT 3
M Swing Swing-Widgets und paintComponent() AWT, Swing, JavaFX & SWT 2
K Probleme beim zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 1
S passende PaintComponent ? Zeichnen in TextArea mit Scrollpane ? AWT, Swing, JavaFX & SWT 2
I (JPanel) paintComponent mit Zeitverschiebung (Sleep/Wait) AWT, Swing, JavaFX & SWT 1
K Swing paintComponent, JPanel auslagern, ChangeEvents AWT, Swing, JavaFX & SWT 7
B Zeichnen mit paintComponent? Oder anders? AWT, Swing, JavaFX & SWT 15
P Paint und paintComponent AWT, Swing, JavaFX & SWT 12
D paintComponent() mit transparentem Hintergrund. AWT, Swing, JavaFX & SWT 0
G Swing Flackern nach Override von paintComponent() AWT, Swing, JavaFX & SWT 3
M Swing paintComponent in rekusivem JPanel funktioniert nicht AWT, Swing, JavaFX & SWT 2
M DefaultTableModel ruft paintComponent auf ! AWT, Swing, JavaFX & SWT 4
T Swing paintComponent(); AWT, Swing, JavaFX & SWT 24
K Swing JButton paintComponent überschreiben AWT, Swing, JavaFX & SWT 5
Kenan89 2D-Grafik paintComponent quetsch alles in Panel AWT, Swing, JavaFX & SWT 26
B 2D-Grafik paintComponent für rechteckigen Bereich? AWT, Swing, JavaFX & SWT 6
P Swing problem mit paintComponent AWT, Swing, JavaFX & SWT 2
R paintComponent malt bei repaint() Rahmen um Panel AWT, Swing, JavaFX & SWT 7
K paintComponent nicht aufgerufen AWT, Swing, JavaFX & SWT 2
J Mal wieder Probleme mit paintComponent AWT, Swing, JavaFX & SWT 3
L Swing 64bit Problem mit paint/paintComponent AWT, Swing, JavaFX & SWT 7
S auf paintComponent() warten AWT, Swing, JavaFX & SWT 34
W JPanel Überschreiben // paintComponent? AWT, Swing, JavaFX & SWT 4
T BufferedImage bei paintComponent AWT, Swing, JavaFX & SWT 6
P JLabel paintComponent AWT, Swing, JavaFX & SWT 3
Z Swing paintcomponent und menbar Problem AWT, Swing, JavaFX & SWT 3
R 2D-Grafik auf JPanel zeichen - ohne @Override paintComponent AWT, Swing, JavaFX & SWT 6
A Probleme mit paintComponent & BorderFactory AWT, Swing, JavaFX & SWT 2
A paintComponent AWT, Swing, JavaFX & SWT 4
T Rechtecke zeichnen mit paintComponent() AWT, Swing, JavaFX & SWT 3
R paintComponent direkt bei actionPerformed aufrufen AWT, Swing, JavaFX & SWT 2
P Swing Vom BufferedImage bei paintComponent nur soviel zeichnen, wie nötig AWT, Swing, JavaFX & SWT 3
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
A paintComponent() - Animation AWT, Swing, JavaFX & SWT 2
K JPanel und paintComponent AWT, Swing, JavaFX & SWT 8
E 2D-Grafik Zeichnen außerhalb der "paintComponent"-Methode? AWT, Swing, JavaFX & SWT 5
C Checkbox in Liste deaktivieren und paintComponent explizit aufrufen AWT, Swing, JavaFX & SWT 12
C Performance-Problem beim Überschreiben von paintComponent() AWT, Swing, JavaFX & SWT 2
P 2D-Grafik PaintComponent() übernimmt keine Werte aus update() AWT, Swing, JavaFX & SWT 8
F Swing Problem mit KeyListener||paintComponent() in JFrame AWT, Swing, JavaFX & SWT 12
P Game of Life - PaintComponent-Problem / Timer? AWT, Swing, JavaFX & SWT 8
B Anzeigefehler in GridBagLayout durch paintComponent(Graphics g) AWT, Swing, JavaFX & SWT 3
J Swing paintComponent() - repaint() - BufferedImage anzeigen AWT, Swing, JavaFX & SWT 5
J paintComponent() übergeben AWT, Swing, JavaFX & SWT 4
N paintComponent für Graphics ansprechen AWT, Swing, JavaFX & SWT 2
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C paintComponent mit Maus verschieben - wie? AWT, Swing, JavaFX & SWT 2
G Swing paintComponent Effizienz? AWT, Swing, JavaFX & SWT 4
R paintComponent Kollision AWT, Swing, JavaFX & SWT 2
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
A Probleme mit paintComponent() AWT, Swing, JavaFX & SWT 2
T Swing paintComponent problem AWT, Swing, JavaFX & SWT 3
MrGe getWidth(); getHeight(); außerhalb von paintComponent AWT, Swing, JavaFX & SWT 4
A paintComponent überdeckt ... AWT, Swing, JavaFX & SWT 13
JFeel-x repaint für Aufruf von paintComponent-Klasse ungeeignet? AWT, Swing, JavaFX & SWT 11
F Wer ruft paintComponent() Methode auf? AWT, Swing, JavaFX & SWT 9
@ JPanel: kein paintComponent() trotz repaint() AWT, Swing, JavaFX & SWT 4
G paintComponent Problem AWT, Swing, JavaFX & SWT 6
T paintComponent() überschreiben: Platz für Border freihalten? AWT, Swing, JavaFX & SWT 6
G paintComponent JPanel im JApplet AWT, Swing, JavaFX & SWT 2
X Speichern in der paintComponent() Methode AWT, Swing, JavaFX & SWT 15
W JLabel + paintComponent AWT, Swing, JavaFX & SWT 2
V Wieviel Logik in paintComponent? AWT, Swing, JavaFX & SWT 7
hdi super.paintComponent(g); soll nicht alles löschen AWT, Swing, JavaFX & SWT 2
G paintComponent() Methode für JPanel in NetBeans überschreibe AWT, Swing, JavaFX & SWT 2
L Problem mit paintComponent() under java < 1.6 under Windo AWT, Swing, JavaFX & SWT 3
H eigene paintComponent(Graphics) kommt mit rezise nicht klar AWT, Swing, JavaFX & SWT 6
N Probleme mit paintComponent und GradientPaint AWT, Swing, JavaFX & SWT 5
B JPanel#paintComponent(Graphics g) << flackert oO AWT, Swing, JavaFX & SWT 3
D performance problem: paintcomponent, alphacomp, bufferedImag AWT, Swing, JavaFX & SWT 10
A Probelme mit großen BufferedImage in paintComponent AWT, Swing, JavaFX & SWT 7
K Problem repaint()->paintComponent AWT, Swing, JavaFX & SWT 9
T Kuchendiagramm - mit paintComponent nach JButton druck zeich AWT, Swing, JavaFX & SWT 4
T JPanel mit paintComponent methode im JInternalFrame AWT, Swing, JavaFX & SWT 3
M super.paintComponent(g); aufrufen oder nicht? AWT, Swing, JavaFX & SWT 8
M Unterschied zwischen paintComponent() und paint()? AWT, Swing, JavaFX & SWT 4
D JTextArea in der paintComponent () hinzufügen? AWT, Swing, JavaFX & SWT 9
raptorrs J2D paintComponent: Nur ganzzahlige (-int) Werte möglich? AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben