Java Probleme OOP

  • Themenstarter Themenstarter Shizou
  • Beginndatum Beginndatum
Sers!

Also zu Erstens: Dieser Code ist syntaktisch korrekt.

Zum Zweiten:

Code:
public void main() {
		
		JButton button = new JButton("Klick mich");
		button.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Thread th = new Thread() {
					

					@Override
					public void run() {
						while(true) {
							
							sonnex += 10; // es werden einfach 10 druafgerechnet
							sonney += 10; // deto
							frame.repaint(); // Fenster muss neu gezeichnet werden
							try {
								sleep(10000);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							} // 10 Sekunden Pausen bis zum nächsten Durchlauf
							
						}
					}
				};
				th.start();
				
			}
			
		});
		
		
		
	}

Und zum Dritten:
Klar geht das, dafür musst du halt einen Algorithmus schreiben, der das für dich erledigt. Z.B. in der While-Schleife eine If-Fallunterscheidung, die überprüft, ob es schon nach 24 Uhr ist usw.

Code:
JButton button = new JButton("Klick mich");
		button.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Thread th = new Thread() {

					@Override
					public void run() {
						while (true) {
							Calendar cal = Calendar.getInstance();
							int hour = cal.get(Calendar.HOUR_OF_DAY);

							if (hour == 5) {
								// es ist zwischen 5:00 Uhe und 5:59 Uhr
								sonnex = 100;
								sonney = 100;
							} else if (hour == 6) {
								// es ist zwischen 6:00 Uhr und 6:59 Uhr
								sonnex = 150;
								sonney = 100;
							} else {
								// nachts:
								sonnex = 100;
								sonney = 400;
							}
							try {
								sleep(10000);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							} //
						}

					}

				};
				th.start();

			}

		});
 
Sers!

Teamviewer nutz ich nicht und eine fertige "Anwendung1.java" existiert nicht. Ich brauche keine komplette Anwendung zusammenbauen bei mir um den Algrithmus zum zeitgesteuerten Setzen vom Parametern zu schreiben. Ich zeige nur auf, wie man die Variablen setzt, wie man diese dann anwendet um z.B. eine Figur dazu zu bringen sich zu bewegen, steht auf einem ganz anderen Blatt Papier.

Ich habe mir jetzt noch mal deine Anwendung geladen und schau mal ob sie schnell umschreiben kann. Hab die Nacht grad nix anderes zu tun! :-)
 
Sers nochmal!

Ich hoffe das ist dein Wille! :)

Ich habe erstmal deine Color-Variable zu Feldern gemacht(eigentlich gehören sie als private deklariert, aber das tut jetzt nix zur Sache), dann kann man nämlich viel besser aus anderen Methoden darauf zugreifen!

Dieser Code reagiert auf einen Klick auf dem neuen Button "Starte den Tag" mit einem separaten Thread der alle 500 Millisekunden die Positions-Koordinaten der Sonne aktualisiert. Dafür habe ich ein zweidimensionales Integer-Array erstellt, welches immer die "sonnex" und die "sonney"-Werte enthält. Mit "coordsPointer" wird darüber iteriert.

Code:
public class Anwendung1 extends Frame implements ActionListener {
	
	private int coordsPointer = 0;
	private Integer[][] coords = new Integer[][]{{50,250},{90,190}, {130,130}, {180,80}, {240,50}, {300, 30},
			{360,30}, {420,50}, {470,65 }, {520, 90}, {570, 120}, {620, 160}, {670, 210}, {720, 270}, {770, 340}};
	boolean thBool = true;
	
	boolean morgen = false;
	boolean tag = true;
	boolean nacht = true;
	private Color color;
	private Color color1;
	private Color color2;
	private Color color3;
	private Color color4;
	private Color color5;
	private Color color6;
	private Color color7;
	private Color color8;
	private Color color9;
	private Color color10;
	private Color color11;
	private Color color12;
	private int sonnex;
	private int sonney;
	private int sonner;
	private int gebüschx;
	private int gebüschy;
	private int gebüschx1;
	private int gebüschy1;

	public static void main(String[] args) {
		Anwendung1 anwendung1 = new Anwendung1();
	}

	public Anwendung1() {
		initialColors();
		// Eine Instanz von EinfacheZeichnung erstellen
		Frame wnd = new Frame("Einfaches Fenster");

		FlowLayout flLayout = new FlowLayout();

		// Start Aenderung:
		Button btStartDay = new Button("Starte den Tag");
		btStartDay.setBackground(new Color(0, 0, 0));
		btStartDay.setForeground(new Color(255, 255, 255));
		btStartDay.addActionListener(this);

		// Ende Aenderung:

		Button btMorgen = new Button("Morgen");
		btMorgen.setBackground(new Color(0, 0, 0));
		btMorgen.setForeground(new Color(255, 255, 255));

		Button btTag = new Button("Tag");
		btTag.setBackground(new Color(0, 0, 0));
		btTag.setForeground(new Color(255, 255, 255));

		Button btNacht = new Button("Nacht");
		btNacht.setBackground(new Color(0, 0, 0));
		btNacht.setForeground(new Color(255, 255, 255));

		this.addWindowListener(new WindowClosingAdapter(true));

		btMorgen.addActionListener(this);
		btTag.addActionListener(this);
		btNacht.addActionListener(this);

		this.setLayout(flLayout);
		this.add(btStartDay);
		this.add(btMorgen);
		this.add(btTag);
		this.add(btNacht);

		// Größe, Hintergrundfarbe und Titel des Fensters festlegen
		this.setBackground(Color.BLACK);
		this.setSize(800, 600);
		this.setVisible(true);

	}
	
	public void initialColors() {
		color = new Color(160, 82, 45);
		color1 = new Color(255, 248, 220);
		color2 = new Color(255, 240, 245);
		color3 = new Color(127, 255, 0);
		color4 = new Color(255, 127, 80);
		color5 = Color.ORANGE;
		color6 = new Color(160, 82, 45);
		color7 = Color.GRAY;
		color8 = Color.WHITE;
		color9 = Color.LIGHT_GRAY;
		color10 = new Color(0, 100, 0);
		color11 = new Color(135, 206, 255);
		color12 = Color.RED;
		sonnex = 50;
		sonney = 250;
		sonner = 50;
		gebüschx = 0;
		gebüschy = 650;
		gebüschx1 = 9999;
		gebüschy1 = 55;
	}

	public void paint(Graphics g) {
//		{
//			Color Sienna = new Color(160, 82, 45);
//			g.setColor(Sienna);// Dunkel-Braun
//			Color Sienna4 = new Color(139, 71, 38);
//			g.setColor(Sienna4);// Dunkel-Braun4
//			Color Coral = new Color(255, 127, 80);
//			g.setColor(Coral);// Hell-Braun
//			Color Coral3 = new Color(205, 91, 69);
//			g.setColor(Coral3);// Coral-Dunkler-Braun
//			Color Cornsilk = new Color(255, 248, 220);
//			g.setColor(Cornsilk);// Glasig
//			Color Darkgreen = new Color(0, 100, 0);
//			g.setColor(Darkgreen);// Dunkel-Grün
//			Color LavenderBlush1 = new Color(255, 240, 245);
//			g.setColor(LavenderBlush1);// Weiß
//			Color SkyBlue1 = new Color(135, 206, 255);
//			g.setColor(SkyBlue1);// Himmelsblau
//			Color Chartreuse1 = new Color(127, 255, 0);
//			g.setColor(Chartreuse1);// Hell-Grün
//			Color DeepSkyBlue3 = new Color(0, 154, 205);
//			g.setColor(DeepSkyBlue3);// Himmels-Dunkel-Blau
//			Color DodgerBlue1 = new Color(30, 144, 255);
//			g.setColor(DodgerBlue1);// Baby-Blau1
//			Color DodgerBlue2 = new Color(28, 134, 238);
//			g.setColor(DodgerBlue2);// Baby-Blau2
//			Color DodgerBlue3 = new Color(24, 116, 205);
//			g.setColor(DodgerBlue3);// Baby-Blau3
//			Color Orange1 = new Color(255, 165, 0);
//			g.setColor(Orange1);// Leicht-Orange
//			Color Grey11 = new Color(28, 28, 28);
//			g.setColor(Grey11);// Dunkel-Grau
//			Color Grey21 = new Color(54, 54, 54);
//			g.setColor(Grey21);// Dunkel-Hell-Grau
//			Color Grey31 = new Color(79, 79, 79);
//			g.setColor(Grey31);// Grau
//			Color Dunkelgrün = new Color(0, 51, 0);
//			g.setColor(Dunkelgrün);// Dunkelgrün
//		}

//		color = Color.DARK_GRAY;
//		color1 = Color.LIGHT_GRAY;
//		color2 = Color.ORANGE;
//		color3 = Color.BLUE;
//		color4 = Color.LIGHT_GRAY;
//		color5 = Color.YELLOW;
//		color6 = new Color(160, 82, 45);
//		color7 = Color.GRAY;
//		color8 = Color.WHITE;
//		color9 = Color.LIGHT_GRAY;
//		color10 = new Color(0, 100, 0);
//		color11 = Color.BLUE;
//		color12 = Color.RED;
//		sonnex = 800;
//		sonney = 50;
//		sonner = 150;
//		gebüschx = 0;
//		gebüschy = 650;
//		gebüschx1 = 9999;
//		gebüschy1 = 55;


			
		
//		if (!tag) {
//			color = new Color(139, 71, 38);
//			color1 = Color.LIGHT_GRAY;
//			color2 = Color.LIGHT_GRAY;
//			color3 = Color.GREEN;
//			color4 = new Color(255, 127, 80);
//			color5 = new Color(255, 165, 0);
//			color6 = new Color(139, 71, 38);
//			color7 = Color.GRAY;
//			color8 = Color.WHITE;
//			color9 = Color.LIGHT_GRAY;
//			color10 = new Color(0, 100, 0);
//			color11 = new Color(0, 154, 205);
//			color12 = Color.RED;
//			sonnex = 400;
//			sonney = 50;
//			sonner = 100;
//			gebüschx = 0;
//			gebüschy = 650;
//			gebüschx1 = 9999;
//			gebüschy1 = 55;
//
//		}
//
//		if (!nacht) {
//			color = new Color(28, 28, 28);
//			color1 = Color.YELLOW;
//			color2 = Color.ORANGE;
//			color3 = Color.BLACK;
//			color4 = Color.ORANGE;
//			color5 = Color.WHITE;
//			color6 = new Color(28, 28, 28);
//			color7 = new Color(28, 28, 28);
//			color8 = new Color(79, 79, 79);
//			color9 = new Color(54, 54, 54);
//			color10 = new Color(0, 51, 0);
//			color11 = Color.BLACK;
//			color12 = new Color(24, 116, 205);
//			sonnex = 800;
//			sonney = 50;
//			sonner = 150;
//			gebüschx = 0;
//			gebüschy = 650;
//			gebüschx1 = 9999;
//			gebüschy1 = 55;
//		}

		Baukasten baukasten = new Baukasten();

		baukasten.rechteck(g, 0, 0, 9999, 9999, color3);// Hintergrund(unten)
		baukasten.rechteck(g, 0, 0, 9999, 500, color11);// Hintergrund(oben)
		baukasten
				.rechteck(g, gebüschx, gebüschy, gebüschx1, gebüschy1, color10);// Gebüsch(einzel)
		baukasten.kreis(g, sonnex, sonney, sonner, color5);// Sonne

		this.meinHaus(g, 200, 200, color, color1, color2, color4, color5,
				color6, color7, color8, color9, color10, color11, color12);
		this.meinHaus(g, 600, 600, color, color1, color2, color4, color5,
				color6, color7, color8, color9, color10, color11, color12);

	}

	// Bei der Parameterdefinition muss ein Variablennamen, z.B. xpos, vorhanden
	// sein und
	// der Typ der Variable muss angegeben werden, z.B. der Typ der Variablen
	// "xpos" ist "int"
	// Die Variable akzeptiert nur ganze Zahlen (integer-Zahlen)
	public void meinHaus(Graphics g, int xpos, int ypos, Color color,
			Color color1, Color color2, Color color4, Color color5,
			Color color6, Color color7, Color color8, Color color9,
			Color color10, Color color11, Color color12) {
		Baukasten baukasten = new Baukasten();

		baukasten.rechteck(g, xpos, ypos, 200, 200, color);// Haus

		baukasten.rechteck(g, xpos + 10, ypos + 10, 75, 50, color1);// Fenster
		baukasten.rechteck(g, xpos + 10, ypos + 100, 75, 50, color1);// Fenster
		baukasten.rechteck(g, xpos + 125, ypos + 10, 50, 50, color1);// Fenster

		baukasten.rechteck(g, xpos + 130, ypos + 140, 40, 60, color1);// Tür

		baukasten.rechteck(g, xpos + 201, ypos + 100, 200, 100, color6);// Garagenrand

		baukasten.kreis(g, xpos + 160, ypos + 175, 3, Color.BLACK);// Türknauf

		baukasten.rechteck(g, xpos + 226, ypos + 125, 150, 75, color2);// Garagentor

		baukasten.rechteck(g, xpos + 226, ypos + 155, 150, 1, Color.BLACK);// Garagenstrich
		baukasten.rechteck(g, xpos + 226, ypos + 175, 150, 1, Color.BLACK);// Garagenstrich
		baukasten.rechteck(g, xpos + 226, ypos + 195, 150, 1, Color.BLACK);// Garagenstrich
		baukasten.rechteck(g, xpos + 226, ypos + 135, 150, 1, Color.BLACK);// Garagenstrich

		baukasten.rechteck(g, xpos + 200, ypos + 100, 1, 150, Color.BLACK);// Haus-Garage-Strich

		baukasten.dreieck(g, xpos, xpos + 200, xpos + 100, ypos, ypos,
				ypos - 40, color4);// Dach

		baukasten.rechteck(g, xpos - 1000, ypos + 270, 9900, 175, color7);// Straße

		baukasten.rechteck(g, xpos - 1000, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 900, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 800, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 700, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 600, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 500, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 400, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 300, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 200, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 100, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 100, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 200, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 300, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 400, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 500, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 600, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 700, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 800, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 900, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 1000, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 1100, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos + 1200, ypos + 340, 75, 25, color8);// Straßenstrich
		baukasten.rechteck(g, xpos - 1000, ypos + 225, 9900, 50, color9);// Bürgersteig
		baukasten.rechteck(g, xpos - 1000, ypos + 430, 9900, 50, color9);// Bürgersteig

		baukasten.rechteck(g, xpos - 1000, ypos + 200, 9900, 25, color10);// Gebüsch

		baukasten.rechteck(g, xpos + 130, ypos + 200, 40, 25, color9);// Hausweg
		baukasten.rechteck(g, xpos + 226, ypos + 200, 150, 25, color9);// Garageneinfahrt

		baukasten.kreis(g, xpos + 360, ypos + 320, 20, Color.BLACK);// Reifen(rechts-oben)
		baukasten.kreis(g, xpos + 395, ypos + 320, 20, Color.BLACK);// Reifen(rechts-oben)
		baukasten.rechteck(g, xpos + 350, ypos + 300, 75, 25, color12);// Auto(rechts-oben)
		baukasten.rechteck(g, xpos + 375, ypos + 285, 50, 15, color12);// Auto-Dach(rechts-oben)
		baukasten.rechteck(g, xpos + 378, ypos + 288, 20, 12, color1);// Auto-Fenster(rechts-oben)

		baukasten.kreis(g, xpos - 440, ypos + 320, 20, Color.BLACK);// Reifen(links-oben)
		baukasten.kreis(g, xpos - 402, ypos + 320, 20, Color.BLACK);// Reifen(links-oben)
		baukasten.rechteck(g, xpos - 450, ypos + 300, 75, 25, color12);// Auto(links-oben)
		baukasten.rechteck(g, xpos - 425, ypos + 285, 50, 15, color12);// Auto-Dach(links-oben)
		baukasten.rechteck(g, xpos - 422, ypos + 288, 20, 12, color1);// Auto-Fenster(links-oben)

		baukasten.kreis(g, xpos + 60, ypos + 400, 20, Color.BLACK);// Reifen(links-unten)
		baukasten.kreis(g, xpos + 25, ypos + 400, 20, Color.BLACK);// Reifen(links-unten)
		baukasten.rechteck(g, xpos + 15, ypos + 380, 75, 25, color12);// Auto(links-unten)
		baukasten.rechteck(g, xpos + 15, ypos + 365, 50, 15, color12);// Auto-Dach(links-unten)
		baukasten.rechteck(g, xpos + 42, ypos + 368, 20, 12, color1);// Auto-Fenster(links-unten)

		baukasten.kreis(g, xpos + 600, ypos + 400, 20, Color.BLACK);// Reifen(rechts-unten)
		baukasten.kreis(g, xpos + 640, ypos + 400, 20, Color.BLACK);// Reifen(rechts-unten)
		baukasten.rechteck(g, xpos + 595, ypos + 380, 75, 25, color12);// Auto(rechts-unten)
		baukasten.rechteck(g, xpos + 595, ypos + 365, 50, 15, color12);// Auto-Dach(rechts-unten)
		baukasten.rechteck(g, xpos + 622, ypos + 368, 20, 12, color1);// Auto-Fenster(rechts-unten)

	}
	
	private void setNextCoord() {
		sonnex = coords[coordsPointer][0];
		sonney = coords[coordsPointer][1];
		coordsPointer++;
		repaint();
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("Morgen")) {
			System.out.print("Morgen");
			nacht = true;
			morgen = false;
			tag = true;
			repaint();

		} else if (e.getActionCommand().equals("Tag")) {
			System.out.print("Tag");
			nacht = true;
			tag = false;
			morgen = true;
			repaint();
		} else if (e.getActionCommand().equals("Nacht")) {
			System.out.print("Nacht");
			nacht = false;
			tag = true;
			morgen = true;
			repaint();

		}
		// Start Aenderung
		else if (e.getActionCommand().equals("Starte den Tag")) {
			Thread th = new Thread() {
				@Override
				public void run() {
					Calendar cal = Calendar.getInstance();
					int hour = cal.get(Calendar.HOUR_OF_DAY); // zwischen 0 und // 23


					while (thBool) {
						setNextCoord();		
						if(coordsPointer == coords.length) {
							// das Ende des Koordinaten-Arrays wurde erreicht!
							thBool = false;
						}
						try {
							Thread.sleep(500);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}

					}

				}

			};
			th.start();

		}

		// Ende Aenderung

	}
}

Also bei mir läuft es 1A!
 
Heyo.
Ich weiß nicht was ich falsch gemacht habe, denn ich habe alles kopiert und eingefügt und siehe da :
unbenanntas.th.jpg

nur Fehler ^^.
 
Ich weiß nicht was ich falsch gemacht habe, denn ich habe alles kopiert und eingefügt und siehe da :
nur Fehler ^^.

Moin,

Dir fehlen wohl die entsprechenden import-Einträge ..... :eek:

Klick mal mit der rechten Maustaste auf das erste rote Fehlersymbol ganz links oben (das Kästchen mit dem x) und wähle dann im Kontextmenü den Punkt "Schnellkorrektur". Hier werden dann verschiedene Lösungsmöglichkeiten vorgeschlagen - u. a. sicher auch der entsprechende Import.
Ausführen ... speichern ... fertig :p
ggf. für alle Fehler wiederholen .....

gruß
Klaus
 
Habe alles gemacht wie du gesagt hast und ich kann es auch starten, aber wenn ich einen Button drücke, passiert nichts.
 
Ja, die Anwendung lässt sich starten aber sobald ich auf einen der Buttons klicke, passiert nichts.
 
Zurück