innere Klasse bei GUI

Status
Nicht offen für weitere Antworten.

leaves

Mitglied
Hallo alle zusammen,

ich habe eine Oberfläche programmiert - bzw. aus einem Buch. Leider kann ich kein Object der inneren Klasse bilden. Ansonsten scheint der Code, laut Eclipse, fehlerfrei zu sein.
Vielen Dank für die Hilfe 🙂

Java:
package de.OO.GUI;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CodePuzzleGUI {

	int x = 1;
	int y = 1;
	
	public static void main(String[] args) {
		CodePuzzleGUI gui = new CodePuzzleGUI();
		gui.los();
	}
	
	public void los() {
		JFrame frame = new JFrame();
		
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		MeinZP zp = new MeinZP();
		frame.getContentPane().add(zp);
		frame.setSize(500,700);
		frame.setVisible(true);
		
		for(int i = 0; i > 124; i++, y++,x++) {
			x++;
			zp.repaint();
		try {
			Thread.sleep(50);
		}	catch (Exception ex) {
			System.out.println("Fehler01");
		}
		}
		class MeinZP extends JPanel {
			public void paintComponent(Graphics g) {
				g.setColor(Color.white);
				g.fillRect(0, 0, 500, 250);
				g.setColor(Color.blue);
				g.fillRect(x, y, 500-x*2, 250-y*2);
			}
		}
	}
}
 
Du hast die Klasse INNERHALB der Methode definiert. Wenn du sowas machst, muss die Definition innerhalb der Methode VOR der Benutzung kommen. Oder du definierst die innere Klasse nicht in der Methode:
Java:
public class CodePuzzleGUI {

	int x = 1;
	int y = 1;

	public static void main(String[] args) {
		CodePuzzleGUI gui = new CodePuzzleGUI();
		gui.los();
	}

	public void los() {
		JFrame frame = new JFrame();

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		MeinZP zp = new MeinZP();
		frame.getContentPane().add(zp);
		frame.setSize(500, 700);
		frame.setVisible(true);

		for (int i = 0; i > 124; i++, y++, x++) {
			x++;
			zp.repaint();
			try {
				Thread.sleep(50);
			} catch (Exception ex) {
				System.out.println("Fehler01");
			}
		}

	}
	
	class MeinZP extends JPanel {
		public void paintComponent(Graphics g) {
			g.setColor(Color.white);
			g.fillRect(0, 0, 500, 250);
			g.setColor(Color.blue);
			g.fillRect(x, y, 500 - x * 2, 250 - y * 2);
		}
	}
}
 
Ich sehe den Wald nicht mehr vor lauter bäumen. Stimmt, jetzt geht es.

Kleiner wird das Dreieck dennoch nicht. Kann es sein, dass die Methode ,,PaintComponent" nur einmal aufgerufen wird?
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben