paint() wird nicht aufgerufen.

redX

Erfahrenes Mitglied
In meinem Main erstelle ich zuerst mal ein JFrame:

Code:
    public static void main(String[] args) {

        //Some Code

        JFrame frame = new JFrame();
        frame.getContentPane().setLayout(null);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        StationPanel stationPanel = new StationPanel(sm);
        frame.getContentPane().add(stationPanel);

        //Some Code

        frame.setSize(windowWidth, windowHeigth);
        frame.setVisible(true);

        System.out.println("before paint");

        frame.repaint();

        System.out.println("after paint");

    }

Nun habe ich noch die Klasse StationPanel

Code:
public class StationPanel extends JPanel {
    //Some Code
    public void paint(Graphics g) {
        super.paint(g);

        System.out.println("paint()");

        //Some Code
    }
}

Der System.out.println() im StationPanel wird nicht ausgegeben. Wieso aber nicht?

MfG
redX
 
hi,
probiere es mal statt
Code:
frame.repaint();
mit
Code:
 frame.paintAll(frame.getGraphics()); oder frame.getContentPane.paintAll(frame.getGraphics()) ;

*grüssle*
MeinerEiner
 
Code:
       System.out.println("before paint");
        //frame.repaint();
        //frame.paintAll(frame.getGraphics());
        frame.getContentPane().paintAll(frame.getGraphics());
        System.out.println("after paint");

Hmpf... funktioniert nicht. Es wird immernoch einfach nicht angezeigt...

MfG
redX
 
hi
es funktioniert, wenn du deinem StationPanel auch mit setSize() oder setBounds() eine Grösse zuweist.
die repaint Methode wird dann automatisch aufgerufen, sofern das Frame bereits sichtbar ist.
Und dann rufen auch
Code:
 frame.repaint();
 frame.paintAll(frame.getGraphics());
 frame.getContentPane().paintAll(frame.getGraphics());
die paint() des Panels auf Methode

*grüssle*
MeinerEiner
 
Herzlichen dank. Habe einfach mal die setSize hinzugefühgt und schon geht es.

Allerdings steckt das ganze jetzt in einer Endlosschleife. In der Paint Mehtode wird der System.out immer wieder ausgegeben. Es steckt in keiner Schleife fest. Ich nehme an es ist wieder das Problem mit dem repaint

Main:
Code:
        JFrame frame = new JFrame();
        frame.getContentPane().setLayout(null);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        StationManager sm = StationManager.getInstance();

        StationPanel stationPanel = new StationPanel(sm);
        frame.getContentPane().add(stationPanel);

        //Some code

        stationPanel.setFont(font);
        stationPanel.setSize(windowWidth, windowHeigth);
        frame.setSize(windowWidth, windowHeigth);
        frame.setVisible(true);
        System.out.println("before paint");

        frame.repaint();
        //frame.paintAll(frame.getGraphics());
        //frame.getContentPane().paintAll(frame.getGraphics());
        System.out.println("after paint");

Paint Methode in der der Klasse StationPanel
Code:
   public void paint(Graphics g) {
        super.paint(g);

        System.out.println("paint()");
        g.setColor(Color.BLACK);
        Iterator ita = sm.keyIterator();

        while (ita.hasNext()) {
            Station station = (Station)ita.next();
            g.drawRect(station.getPointCoordLeft(), station.getPointCoordTop(), 2, 2);
            drawDescription(station.getPointCoordLeft() + 5, station.getPointCoordTop() - 5, station.getDescriptionLength(), station.getDescriptionHeight(),station.getDescriptionText());
        }
    }



MfG
redX
 
Zuletzt bearbeitet:
Zurück