Java Probleme OOP

  • Themenstarter Themenstarter Shizou
  • Beginndatum Beginndatum
Moin, #

wenn Du von dem Code von macsx aus Post #15 sprichst, dann solltest Du mal die Funktion "actionPerformed" debuggen ! :)

Gruß
Klaus
 
Hab ich gemacht :
public void actionPerformed1(ActionEvent e) {
....
....
....
public void actionPerformed11(ActionEvent arg0) {
// TODO Auto-generated method stub

}

public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub

}

Das ist alles ganz unten bei mir und das habe ich debuggen lassen und das kam bei raus.
 
dann hast Du was falsch gemacht ;)

Wo kommt denn "actionPerformed1" her? Davon steht nix im Code aus Post #15 (!)

Du mußt Dich schon genau an das gepostete Beispiel halten :eek::p

Gruß
Klaus
 
Erstmal war es ja actionPerformed ohne eine Zahl, aber das wurde mir als Fehler angezeigt und als ich das gedebuggt habe, kam das bei raus .
 
Es muss auch ohne Zahl sein ! ! !

Um den Standard-actionListener zu überschrieben, solltest Du ggf. einen Adapter nutzen - analog zu
Java:
"this.addWindowListener(new windowClosingAdapter(true));

So wie Du es jetzt stehen hast, ist Dein actionListener leer ... ergo: keine Reaktion beim Klicken des Button!

Welcher Fehlermeldung ist denn bei Dir zuvor gekommen ?

Gruß
Klaus
 
this.addWindowListener(new windowClosingAdapter(true));
Hab ich jetzt reingebracht, aber der zeigt dann Fehler an wenn ich es ohne Zahlen mache.
 
Sers nochmal!

Hier jetzt nochmal der Code mit Imports und allem was ich sonst noch drin stehn hab, was der Debugger noch zernudeln könnte.

Code:
/* GrafikBeispiel.java */

import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;

import javax.swing.*;

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

	}
}

Ich hoffe es gibt keine Regel hier für das Überlänge-Posten! :)


PS.: @vfl_freak ein WindowListener/WindowAdapter wird ihn nicht weiterbringen bei einem Button! :suspekt:

PPS.: @Shizou Diesen Code für ich nur mit den originalen Klassen des Projektes, welches du online gestellt hast, aus! Falls du bei den anderen Klassen bereits seitdem Uploaden etwas geändert hast, wäre das vielleicht auch ein Grund fürs Fehlschlagen!
 
Zuletzt bearbeitet:
Danke an euch beide.
Aber mal eine Frage macx. Ist es auch möglich die Buttons in einen zu fassen und wenn die Sonne dann oben ist das es dann Tag wird und wenn die Sonne bzw dann der Mond rechts unten ist Nacht wird?
Weil ich kann ja jetzt nur den Starte den Tag Button benutzen.
 
Sers!

@Shizou Ich habe dir jetzt gezeigt wie man einen ActionListener an einen Button bindet und bei einem Klick auf diesen eine Reaktion hervorruft. Nun sollte es ein Leichtes sein, dies auf anderen Buttons zu implementieren.
Vielleicht solltest du dann in der actionPerformed-Methode die Color-Werte für Hintergrund usw. ändern!!
 
Zurück