manchmal gehts, manchmal nicht????

Tonxxx

Bekanntes Mitglied
hei zusammen

ich habe vor kurzem ein problem ins net gestellt, bei dem ich dachte meine main class hätte den focus verlohren.
ich war heute bei einem informatikstudenten, und hab das programm bei ihm laufen geelassen. Man muss noch sagen das ich mein Applet mit dem appletviewer von sun geöffnet habe. Bei ihm auf dem Laptop hat er es mit Eclipse geöffnet, und siehe da, es ging!!!
da haben wir auch gleich Eclipse auf meinem Rechner installiert, und auch da ging es. Bis dahin finde ich es schon komisch, warum konnte Eclipse mein Programm richtig ausführen aber Appletviewer nicht?

doch nun kommt es noch mysteriöser: manchmal , auch wenn wir am wuellcode nichts geändert haben, ging das programm plötzlich nicht mehr, und bei einem weiteren versuch ging es dann wieder.

Mein nachhilfestudent konnte sich das auch nicht erklähren, doch da es zum schluss sehr gut funktionierte ging i h nach hause.

Nun bin ich zuhause und es geht einfach nicht! das programm zeichnet schön, doch es reagiert nicht auf die Keylistener!!!

wie kann es sein das mein programm einmal einen Keylistener kennnt und manchmal nicht????

könnt ihr mir da helfen?

hab ich irgend welche komischen einstellungen auf meinem lap?

bitte um hilfe, mein quellcode ist korrekt aber geht trotzdem nicht.....
 

Java-Freak

Bekanntes Mitglied
ich hab soeben ein ähnlichen problem gefixt.bei mir lags an der unterschiedlichen schnelligkeit von versch. Rechern. schau dir mal den thread JPong in "Codeschnipsel u. Projekte" an...
 

Marco13

Top Contributor
Wenn das mit dem KeyListener das einzige Symptom ist, klingt das IMHO nach einer Focus-Sache. Klick' mal auf das Applet, nachdem es getartet ist, damit es den Focus hat.
 

Tonxxx

Bekanntes Mitglied
ich haben mit dem studenten zusammen das applet in ein frame umgewandelt. an dem liegt es nicht. ich habe immer zuerst auf mein programm geklickt bevor ich di tastatur testete. Java-Freak: ich verstehe deine antwort nicht ganz, und wie hast du dein problem gelöst. der Computer meines Studenten war viel älter als meiner, ich nehme an ich habe den schnelleren.
er konnte sich mein problem auch nicht erklähren, es ist wie wenn mein computer einen eigenen willen hätte.
 

Tonxxx

Bekanntes Mitglied
Java:
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;

class BirdsEyeView extends Canvas// implements KeyListener
{

	private static final long serialVersionUID = 1L;

	boolean running = true;

	int appletsize_x; // Größe des Applets in x - Richtung
	int appletsize_y; // Größe des Applets in y - Richtung

	int v1;
	int v2;
	int v3;
	int v4;

	double t;

	int Radius; 
	int radius;
	int kradius;
	int kRadius;
	int radiusComet;

	double ex_a_e;
	double ex_b_e;
	double ex_a_m;
	double ex_b_m;
	double ex_a_s;
	double ex_b_s;

	int mittelP;

	int Schweif;

	int anzahlC;

	int[] x1Comet = new int[anzahlC];
	int[] y1Comet = new int[anzahlC];

	int[] x2Comet = new int[anzahlC];
	int[] y2Comet = new int[anzahlC];

	int[] x3Comet = new int[anzahlC];
	int[] y3Comet = new int[anzahlC];

	int[] x4Comet = new int[anzahlC];
	int[] y4Comet = new int[anzahlC];

	int xm;
	int ym;

	int xs;
	int ys;

	int[] x = new int[5];
	int[] y = new int[5];

	double[] xd = new double[5];
	double[] yd = new double[5];
	
	public void actionPerformed(ActionEvent event){
		
		if (event.getActionCommand().equals("Sonne")){
			System.out.println("SunButton");
		}
		if (event.getActionCommand().equals("Merkur")){
			
		}
		if (event.getActionCommand().equals("Venus")){
			
		}
		if (event.getActionCommand().equals("Erde")){
			
		}
		if (event.getActionCommand().equals("Mars")){
			
		}
	
	}

	protected void processMouseEvent(FocusEvent event) {
		// System.out.println(event.getKeyChar());
		System.out.println("superdupa!!");
	}

	/*
	 * public void keyPressed(KeyEvent event) {
	 * 
	 * //Schweife if (event.getKeyChar() == 'q') { Schweif = 0;
	 * System.out.println("q");
	 * 
	 * 
	 * for (int k = 0; k <= anzahlC; k++) {
	 * 
	 * x1Comet[k] = 0; y1Comet[k] = 0;
	 * 
	 * x2Comet[k] = 0; y2Comet[k] = 0;
	 * 
	 * x3Comet[k] = 0; y3Comet[k] = 0;
	 * 
	 * x4Comet[k] = 0; y4Comet[k] = 0;
	 * 
	 * } } if (event.getKeyChar() == 'w') { Schweif = 1;
	 * System.out.println("w"); for (int k = 0; k <= anzahlC; k++) {
	 * 
	 * x1Comet[k] = 0; y1Comet[k] = 0;
	 * 
	 * x2Comet[k] = 0; y2Comet[k] = 0;
	 * 
	 * x3Comet[k] = 0; y3Comet[k] = 0;
	 * 
	 * x4Comet[k] = 0; y4Comet[k] = 0;
	 * 
	 * } } if (event.getKeyChar() == 'e') { Schweif = 2;
	 * System.out.println("e"); }
	 * 
	 * // Thread Soppen und starten if (event.getKeyChar() == 'f') {
	 * //th.interrupt(); running = false; System.out.println("finish"); } if
	 * (event.getKeyChar() == 's') {
	 * 
	 * running = true; th = new Thread(this); th.start(); }
	 * 
	 * //Zentrum setzen if (event.getKeyChar() == '0') { running = false;
	 * mittelP = 0; while (th.isAlive()) { System.out.print(""); } running =
	 * true; th = new Thread(this); th.start(); } if (event.getKeyChar() == '1')
	 * { running = false; mittelP = 1; while (th.isAlive()) {
	 * System.out.print("alive "); } running = true; th = new Thread(this);
	 * th.start(); } if (event.getKeyChar() == '2') { running = false; mittelP =
	 * 2; while (th.isAlive()) { System.out.print("alive "); } running = true;
	 * th = new Thread(this); th.start(); } if (event.getKeyChar() == '3') {
	 * running = false; mittelP = 3; while (th.isAlive()) {
	 * System.out.print("alive "); } running = true; th = new Thread(this);
	 * th.start(); }
	 * 
	 * System.out.println(event.getKeyChar());
	 * 
	 * 
	 * }
	 */

	public void keyReleased(KeyEvent event) {

	}

	public void keyTyped(KeyEvent event) {

	}

	public BirdsEyeView(int appletsize_x, int appletsize_y, int v1, int v2,
			int v3, int v4, double t, int Radius, int radius, int kradius,
			int kRadius, int radiusComet, double ex_a_e, double ex_b_e,
			double ex_a_m, double ex_b_m, double ex_a_s, double ex_b_s,
			int mittelP, int Schweif, int anzahlC, int xm, int ym, int xs,
			int ys, int[] x, int[] y, double[] xd, double[] yd) {

		this.appletsize_x = appletsize_x;
		this.appletsize_y = appletsize_y;

		this.v1 = v1;
		this.v2 = v2;

		this.v3 = v3;
		this.v4 = v4;
		this.t = t;
		this.Radius = Radius;
		this.radius = radius;
		this.kradius = kradius;
		this.kRadius = kRadius;
		this.radiusComet = radiusComet;
		this.ex_a_e = ex_a_e;
		this.ex_b_e = ex_b_e;
		this.ex_a_m = ex_a_m;
		this.ex_b_m = ex_b_m;
		this.ex_a_s = ex_a_s;
		this.ex_b_s = ex_b_s;
		this.mittelP = mittelP;
		this.Schweif = Schweif;
		this.anzahlC = anzahlC;
		this.x = x;
		this.y = y;
		this.xd = xd;
		this.yd = yd;

		System.out.println("b " + Schweif + " " + anzahlC);

		/*
		 * enableEvents(AWTEvent.COMPONENT_EVENT_MASK);
		 * enableEvents(AWTEvent.FOCUS_EVENT_MASK);
		 * enableEvents(AWTEvent.MOUSE_EVENT_MASK);
		 * enableEvents(AWTEvent.KEY_EVENT_MASK);
		 */

	}

	public void paint(final Graphics g) {
		/* das paint() der super-Klasse muss natürlich aufgerufen werden. */
		super.paint(g);

		if (Schweif == 0) {
			
			  Color braun = new Color(142,43,43);
			  
			  g.setColor (braun);
			  
			  g.fillOval (x[1] + appletsize_x/2 - 1, y[1] + appletsize_y / 2 -
			  1 -100, 2, 2);
			  
			  g.setColor (Color.orange);
			  
			  g.fillOval (x[2] + appletsize_x/2 - 1, y[2] + appletsize_y / 2 -
			  1 - 100, 2, 2);
			  
			  g.setColor (Color.blue);
			  
			  g.fillOval (x[3] + appletsize_x/2 - 1, y[3] + appletsize_y / 2 -
			  1 - 100, 2, 2);
			  
			  g.setColor (Color.red);
			  
			  g.fillOval (x[4] + appletsize_x/2 - 1, y[4] + appletsize_y / 2 -
			  1 - 100, 2, 2);
			  
			  g.setColor (Color.yellow);
			  
			  g.fillOval (x[0] + appletsize_x/2 - 1, y[0] + appletsize_y / 2 -
			  1 - 100, 2, 2);
			 

		}
		//System.out.println(Schweif);
		if (Schweif == 1) {
			Color braun = new Color(142, 43, 43);

			g.setColor(braun);

			g.fillOval(x[1] + appletsize_x / 2 - 2, y[1] + appletsize_y / 2 - 2
					- 100, 4, 4);

			g.setColor(Color.orange);

			g.fillOval(x[2] + appletsize_x / 2 - 2, y[2] + appletsize_y / 2 - 2
					- 100, 4, 4);

			g.setColor(Color.blue);

			g.fillOval(x[3] + appletsize_x / 2 - 2, y[3] + appletsize_y / 2 - 2
					- 100, 4, 4);

			g.setColor(Color.red);

			g.fillOval(x[4] + appletsize_x / 2 - 2, y[4] + appletsize_y / 2 - 2
					- 100, 4, 4);

			g.setColor(Color.yellow);

			g.fillOval(x[0] + appletsize_x / 2 - 2, y[0] + appletsize_y / 2 - 2
					- 100, 4, 4);

		}
		if (Schweif == 2) {
			for (int i = 1; i < anzahlC; i++) {
				Color farbe = new Color(255 - (10 / radiusComet) * i, 0,
						(10 / radiusComet) * i);

				g.setColor(farbe);

				// System.out.println(farbe);

				g.fillOval(x1Comet[i] - radiusComet + appletsize_x / 2,
						y1Comet[i] - radiusComet + appletsize_y / 2 + i / 20
								- 100, 2 * radiusComet - i / 10, 2
								* radiusComet - i / 10);

				g.fillOval(x2Comet[i] - radiusComet + appletsize_x / 2,
						y2Comet[i] - radiusComet + appletsize_y / 2 + i / 20
								- 100, 2 * radiusComet - i / 10, 2
								* radiusComet - i / 10);

				g.fillOval(x3Comet[i] - radiusComet + appletsize_x / 2,
						y3Comet[i] - radiusComet + appletsize_y / 2 + i / 20
								- 100, 2 * radiusComet - i / 10, 2
								* radiusComet - i / 10);

				g.fillOval(x4Comet[i] - radiusComet + appletsize_x / 2,
						y4Comet[i] - radiusComet + appletsize_y / 2 + i / 20
								- 100, 2 * radiusComet - i / 10, 2
								* radiusComet - i / 10);

				g.setColor(Color.yellow);

				g.fillOval(appletsize_x / 2 - 5, appletsize_y / 2 - 5 - 100,
						10, 10);

			}

		}

	}
}
Java:
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Panel;
import java.awt.RenderingHints;
import java.awt.Transparency;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;

import javax.swing.JButton;
import javax.swing.JLabel;

class LayoutManager extends Panel implements Runnable, KeyListener {
	// Initialisierung der Variablen
	
	private static final long serialVersionUID = 1L;

	boolean running = true;

	int appletsize_x = 1200; // Größe des Applets in x - Richtung
	int appletsize_y = 1200; // Größe des Applets in y - Richtung

	int v1 = 11;
	int v2 = 17;
	int v3 = 25;
	int v4 = 13;

	double t;

	int Radius = 47;
	int radius = 27;
	int kradius = 10;
	int kRadius = 20;
	int radiusComet = 5;

	double ex_a_e = 0.5;
	double ex_b_e = 0.25;
	double ex_a_m = 0.4;
	double ex_b_m = 0.15;
	double ex_a_s = 0.25;
	double ex_b_s = 0.5;

	int mittelP = 0;

	int Schweif = 1;

	int anzahlC = 25 * radiusComet;

	int[] x1Comet = new int[anzahlC];
	int[] y1Comet = new int[anzahlC];

	int[] x2Comet = new int[anzahlC];
	int[] y2Comet = new int[anzahlC];

	int[] x3Comet = new int[anzahlC];
	int[] y3Comet = new int[anzahlC];

	int[] x4Comet = new int[anzahlC];
	int[] y4Comet = new int[anzahlC];

	int xm;
	int ym;

	int xs;
	int ys;

	int[] x = new int[5];
	int[] y = new int[5];

	double[] xd = new double[5];
	double[] yd = new double[5];

	BufferedImage buffer;
	Graphics2D bufferG;

	// Variablen für die Doppelpufferung
	private Image dbImage;
	private Graphics dbg;

	Planets Merkur = new Planets(v3, t, kradius, ex_b_m, ex_a_m, 0);
	Planets Venus = new Planets(v2, t, kRadius, ex_a_s, ex_a_s, 1);
	Planets Earth = new Planets(v4, t, radius, ex_a_e, ex_b_e, 2);
	Planets Mars = new Planets(v1, t, Radius, ex_a_m, ex_b_m, 3);

	JButton button = new JButton("Tastaturereignisse");
	JLabel l = new JLabel();

	Thread th = new Thread(this);

	BirdsEyeView bird;

//	Side side;

	Color braun;

	int f = 0;

	Panel centerPanel;
	Panel buttons;
	public LayoutManager() {

		bird = new BirdsEyeView(appletsize_x, appletsize_y, v1, v2, v3, v4, t,
				Radius, radius, kradius, kRadius, radiusComet, ex_a_e, ex_b_e,
				ex_a_m, ex_b_m, ex_a_s, ex_b_s, mittelP, Schweif, anzahlC, xm,
				ym, xs, ys, x, y, xd, yd);
		bird.setSize(300, 300);


		setLayout(new BorderLayout());

		// add the two canvases

		
		buttons = new Panel();
		buttons.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));

		Color farbebg = new Color(0, 0, 0);
		bird.setBackground(farbebg);
		add(bird);
		add(buttons, BorderLayout.NORTH);
		
		Button SunB = new Button("Sun");
		Button MerkurB = new Button("Merkur");
		Button VenusB = new Button("Venus");
		Button EarthB = new Button("Earth");
		Button MarsB = new Button("Mars");
		
		buttons.add(SunB);
		buttons.add(MerkurB);
		buttons.add(VenusB);
		buttons.add(EarthB);
		buttons.add(MarsB);


		enableEvents(AWTEvent.COMPONENT_EVENT_MASK);
		enableEvents(AWTEvent.FOCUS_EVENT_MASK);
		enableEvents(AWTEvent.MOUSE_EVENT_MASK);
		enableEvents(AWTEvent.KEY_EVENT_MASK);

		// pack();
		// setBackground(Color.black);
		setPreferredSize(new Dimension(appletsize_x, appletsize_y));
		// Thread th = new Thread(this);
		th.start();

		addKeyListener(this);

	}

	public boolean isFocusable() {
		return true;
	}
	
	public void actionPerformed(ActionEvent event){
	
		if (event.getActionCommand().equals("Sonne")){
			System.out.println("SunButton");
		}
		if (event.getActionCommand().equals("Merkur")){
			
		}
		if (event.getActionCommand().equals("Venus")){
			
		}
		if (event.getActionCommand().equals("Erde")){
			
		}
		if (event.getActionCommand().equals("Mars")){
			
		}
	
	}

	public void keyPressed(KeyEvent event) {

		// Schweife
		if (event.getKeyChar() == 'q') {
			Schweif = 0;
			System.out.println("q");

			for (int k = 0; k <= anzahlC; k++) {

				x1Comet[k] = 0;
				y1Comet[k] = 0;

				x2Comet[k] = 0;
				y2Comet[k] = 0;

				x3Comet[k] = 0;
				y3Comet[k] = 0;

				x4Comet[k] = 0;
				y4Comet[k] = 0;

			}
		}
		if (event.getKeyChar() == 'w') {
			Schweif = 1;
			System.out.println("w");
			for (int k = 0; k < anzahlC; k++) {

				x1Comet[k] = 0;
				y1Comet[k] = 0;

				x2Comet[k] = 0;
				y2Comet[k] = 0;

				x3Comet[k] = 0;
				y3Comet[k] = 0;

				x4Comet[k] = 0;
				y4Comet[k] = 0;

			}
		}
		if (event.getKeyChar() == 'e') {
			Schweif = 2;
			System.out.println("e");
		}

		// Thread Soppen und starten
		if (event.getKeyChar() == 'f') {
			// th.interrupt();
			running = false;
			System.out.println("finish");
		}
		if (event.getKeyChar() == 's') {
			running = true;
			th = new Thread(this);
			th.start();
		}

		// Zentrum setzen
		if (event.getKeyChar() == '0') {
			running = false;
			mittelP = 0;
			while (th.isAlive()) {
				System.out.print("");
			}
			running = true;
			th = new Thread(this);
			th.start();
		}
		if (event.getKeyChar() == '1') {
			running = false;
			mittelP = 1;
			while (th.isAlive()) {
				System.out.print("alive ");
			}
			running = true;
			th = new Thread(this);
			th.start();
		}
		if (event.getKeyChar() == '2') {
			running = false;
			mittelP = 2;
			while (th.isAlive()) {
				System.out.print("alive ");
			}
			running = true;
			th = new Thread(this);
			th.start();
		}
		if (event.getKeyChar() == '3') {
			running = false;
			mittelP = 3;
			while (th.isAlive()) {
				System.out.print("alive ");
			}
			running = true;
			th = new Thread(this);
			th.start();
		}
		this.bird.Schweif = this.Schweif;
		System.out.println(event.getKeyChar());
	}

	public void keyReleased(KeyEvent event) {

	}

	public void keyTyped(KeyEvent event) {

	}

	public void run() {
		// Erniedrigen der ThreadPriority um zeichnen zu erleichtern
		Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

		// BufferedImage

		this.buffer = new BufferedImage(appletsize_x, appletsize_y,
				Transparency.TRANSLUCENT);
		this.bufferG = buffer.createGraphics();
		this.bufferG.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
				RenderingHints.VALUE_ANTIALIAS_ON);
		setPreferredSize(new Dimension(appletsize_x, appletsize_y));

		// add("Center", centerPanel);
		// add("South", side);

		for (int j = 0; j <= anzahlC - 1; j++) {
			x1Comet[j] = 0;
			y1Comet[j] = 0;

			x2Comet[j] = 0;
			y2Comet[j] = 0;

			x3Comet[j] = 0;
			y3Comet[j] = 0;

			x4Comet[j] = 0;
			y4Comet[j] = 0;
		}

		// Solange true ist läuft der Thread weiter
		while (running) {
			t += 0.02;
			// System.out.println(Schweif);

			if (Schweif == 2) {
				comet();
			}

			center(mittelP);

			// System.out.println(t);

			// Neuzeichnen des Applets
			repaint();
			bird.repaint();

			try {
				// Stoppen des Threads für in Klammern angegebene Millisekunden
				Thread.sleep(20);
			} catch (InterruptedException ex) {
				// do nothing
			}

			// Zurücksetzen der ThreadPriority auf Maximalwert
			Thread.currentThread().setPriority(Thread.MAX_PRIORITY);

			if (th.interrupted()) {
				break;
			}
		}

	}

	public void Input(int p) {
		running = false;
		mittelP = p;
		while (th.isAlive()) {
			System.out.print("alive ");
		}

		running = true;
		th = new Thread(this);
		th.start();
		System.out.println("Input end");
	}

	public void center(int n) {

		xd[1] = Merkur.OvalX(t);
		yd[1] = Merkur.OvalY(t);

		xd[2] = Venus.OvalX(t);
		yd[2] = Venus.OvalY(t);

		xd[3] = Earth.OvalX(t);
		yd[3] = Earth.OvalY(t);

		xd[4] = Mars.OvalX(t);
		yd[4] = Mars.OvalY(t);

		x[1] = (int) (Merkur.OvalX(t) + xd[n]);
		y[1] = (int) (Merkur.OvalY(t) + yd[n]);

		x[2] = (int) (Venus.OvalX(t) + xd[n]);
		y[2] = (int) (Venus.OvalY(t) + yd[n]);

		x[3] = (int) (Earth.OvalX(t) + xd[n]);
		y[3] = (int) (Earth.OvalY(t) + yd[n]);

		x[4] = (int) (Mars.OvalX(t) + xd[n]);
		y[4] = (int) (Mars.OvalY(t) + yd[n]);

		x[0] = (int) (xd[n] / 2);
		y[0] = (int) (yd[n] / 2);

		x[n] = 0;
		y[n] = 0;
	}

	public void comet() {
		for (int i = anzahlC - 1; 0 < i; i--) {
			x1Comet[i] = x1Comet[i - 1];
			y1Comet[i] = y1Comet[i - 1];

			x2Comet[i] = x2Comet[i - 1];
			y2Comet[i] = y2Comet[i - 1];

			x3Comet[i] = x3Comet[i - 1];
			y3Comet[i] = y3Comet[i - 1];

			x4Comet[i] = x4Comet[i - 1];
			y4Comet[i] = y4Comet[i - 1];

		}

		x1Comet[0] = x[1];
		y1Comet[0] = y[1];

		x2Comet[0] = x[2];
		y2Comet[0] = y[2];

		x3Comet[0] = x[3];
		y3Comet[0] = y[3];

		x4Comet[0] = x[4];
		y4Comet[0] = y[4];
	}

	/**
	 * Update - Methode, Realisierung der Doppelpufferung zur Reduzierung des
	 * Bildschirmflackerns
	 */
	public void update(Graphics g) {

		// Initialisierung des DoubleBuffers
		if (dbImage == null) {
			dbImage = createImage(this.getSize().width, this.getSize().height);
			dbg = dbImage.getGraphics();
		}

		// Bildschirm im Hintergrund löschen
		dbg.setColor(getBackground());
		dbg.fillRect(0, 0, this.getSize().width, this.getSize().height);

		// Auf gelöschten Hintergrund Vordergrund zeichnen
		dbg.setColor(getForeground());
		paint(dbg);

		// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm
		// anzeigen
		g.drawImage(dbImage, 0, 0, this);

		paint(g);
	}

	public void paint(Graphics g) {
		/*
		 * g.setColor (braun);
		 * 
		 * g.fillOval (appletsize_x/2 - 1, appletsize_y / 2 - 1, 20, 20);
		 * 
		 * 
		 * // BufferedImage bufferG.setColor (Color.red);
		 * 
		 * bufferG.fillOval (x[1] + appletsize_x/2 - 1, y[1] + appletsize_y / 2
		 * - 1 -100, 2, 2);
		 * 
		 * bufferG.setColor (Color.red);
		 * 
		 * bufferG.fillOval (x[2] + appletsize_x/2 - 1, y[2] + appletsize_y / 2
		 * - 1 - 100, 2, 2);
		 * 
		 * bufferG.setColor (Color.red);
		 * 
		 * bufferG.fillOval (x[3] + appletsize_x/2 - 1, y[3] + appletsize_y / 2
		 * - 1 - 100, 2, 2);
		 * 
		 * bufferG.setColor (Color.red);
		 * 
		 * bufferG.fillOval (x[4] + appletsize_x/2 - 1, y[4] + appletsize_y / 2
		 * - 1 - 100, 2, 2);
		 * 
		 * bufferG.setColor (Color.red);
		 * 
		 * bufferG.fillOval (x[0] + appletsize_x/2 - 1, y[0] + appletsize_y / 2
		 * - 1 - 100, 2, 2);
		 * 
		 * 
		 * if (Schweif == 0) { Color braun = new Color(142,43,43);
		 * 
		 * g.setColor (braun);
		 * 
		 * g.fillOval (x[1] + appletsize_x/2 - 1, y[1] + appletsize_y / 2 - 1
		 * -100, 2, 2);
		 * 
		 * g.setColor (Color.orange);
		 * 
		 * g.fillOval (x[2] + appletsize_x/2 - 1, y[2] + appletsize_y / 2 - 1 -
		 * 100, 2, 2);
		 * 
		 * g.setColor (Color.blue);
		 * 
		 * g.fillOval (x[3] + appletsize_x/2 - 1, y[3] + appletsize_y / 2 - 1 -
		 * 100, 2, 2);
		 * 
		 * g.setColor (Color.red);
		 * 
		 * g.fillOval (x[4] + appletsize_x/2 - 1, y[4] + appletsize_y / 2 - 1 -
		 * 100, 2, 2);
		 * 
		 * g.setColor (Color.yellow);
		 * 
		 * g.fillOval (x[0] + appletsize_x/2 - 1, y[0] + appletsize_y / 2 - 1 -
		 * 100, 2, 2);
		 * 
		 * } if (Schweif == 1) { Color braun = new Color(142,43,43);
		 * 
		 * g.drawImage(buffer,0,0,null);
		 * 
		 * 
		 * g.setColor (braun);
		 * 
		 * g.fillOval (x[1] + appletsize_x/2 - 2, y[1] + appletsize_y / 2 - 2
		 * -100, 4, 4);
		 * 
		 * g.setColor (Color.orange);
		 * 
		 * g.fillOval (x[2] + appletsize_x/2 - 2, y[2] + appletsize_y / 2 - 2 -
		 * 100, 4, 4);
		 * 
		 * g.setColor (Color.blue);
		 * 
		 * g.fillOval (x[3] + appletsize_x/2 - 2, y[3] + appletsize_y / 2 - 2 -
		 * 100, 4, 4);
		 * 
		 * g.setColor (Color.red);
		 * 
		 * g.fillOval (x[4] + appletsize_x/2 - 2, y[4] + appletsize_y / 2 - 2 -
		 * 100, 4, 4);
		 * 
		 * g.setColor (Color.yellow);
		 * 
		 * g.fillOval (x[0] + appletsize_x/2 - 2, y[0] + appletsize_y / 2 - 2 -
		 * 100, 4, 4); } if (Schweif == 2) { for(int i = 1; i < anzahlC; i++) {
		 * Color farbe = new Color(255 - (10/radiusComet) * i,0,(10/
		 * radiusComet) * i);
		 * 
		 * g.setColor (farbe);
		 * 
		 * //System.out.println(farbe);
		 * 
		 * g.fillOval (x1Comet[i] - radiusComet + appletsize_x/2, y1Comet[i] -
		 * radiusComet + appletsize_y/2 + i/20 - 100, 2 * radiusComet - i/10, 2
		 * * radiusComet - i/10);
		 * 
		 * g.fillOval (x2Comet[i] - radiusComet + appletsize_x/2, y2Comet[i] -
		 * radiusComet + appletsize_y/2 + i/20 - 100, 2 * radiusComet - i/10, 2
		 * * radiusComet - i/10);
		 * 
		 * g.fillOval (x3Comet[i] - radiusComet + appletsize_x/2, y3Comet[i] -
		 * radiusComet + appletsize_y/2 + i/20 - 100, 2 * radiusComet - i/10, 2
		 * * radiusComet - i/10);
		 * 
		 * g.fillOval (x4Comet[i] - radiusComet + appletsize_x/2, y4Comet[i] -
		 * radiusComet + appletsize_y/2 + i/20 - 100, 2 * radiusComet - i/10, 2
		 * * radiusComet - i/10);
		 * 
		 * g.setColor (Color.yellow);
		 * 
		 * g.fillOval (appletsize_x/2 - 5, appletsize_y / 2 - 5 - 100, 10, 10);
		 * 
		 * }
		 * 
		 * 
		 * 
		 * }
		 */
	}
}
Java:
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MainFrame extends Frame {

	private static final long serialVersionUID = 1L;

	public MainFrame() {
		super();
		LayoutManager lm = new LayoutManager();
		add(lm);
		addKeyListener(lm);
	}

	public static void main(String[] args) {
		MainFrame frame = new MainFrame();
		frame.setSize(600, 600);
		
		frame.setVisible(true);
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent evt) {
				System.exit(0);
			}
		});
	}
}
Java:
class Planets
{


	int 	v;
	double 	t;
	int 	radius;
	double 	ex_a;
	double 	ex_b;

	int 	i;

	double[] x = new double[5];
	double[] y = new double[5];

	public Planets(int v, double t, int radius, double ex_a, double ex_b, int i)
	{
		this.v = 	v;
		this.t = 	t;
		this.radius = 	radius;
		this.ex_a = 	ex_a;
		this.ex_b = 	ex_b;
		this.i = 	i;
	}


	public double OvalX(double t)
	{
			x[i] = (Math.cos((v * t)/radius)* radius)/ ex_a;
			

			return x[i];
	}

	public double OvalY(double t)
	{

			y[i]= (Math.sin((v * t)/radius)* radius)/ ex_b;
			

			return y[i];
	}


}
 

knoppers

Bekanntes Mitglied
Java:
    public MainFrame() {
        super();
        LayoutManager lm = new LayoutManager();
        add(lm);
        addKeyListener(lm);
    }

Weiss zwar nicht ob das, dieses Problem löst, aber probiere mal.

Java:
addKeyListener(lm.getKeyListener());
 

Tonxxx

Bekanntes Mitglied
nein das löst mein problem nicht, im gegenteil, mein compiler reklamiert nun!
kann jemand mal den code bei sich einfügen und auf Sun drücken. dann sollte im cmd etwas ausgespuckt werden, odr drückt irgend eine taste...
 

Java-Freak

Bekanntes Mitglied
was ich meinte war:
ich hatte das problem, dass bei meinem alten pc das programm ging und auf diversen neueren nicht, weil ich die zeit für einen schleifendurchlauf gemessen habe und bei meinem alten gings, weil da die zeit nicht null war aber bei neueren hat er da 0 milisekunden gebraucht, was eine ArithmeticExeption zur folge hatte...da du aber was ich gesehen habe nichts mit zeit machst kann es sowas nicht sein..
 

knoppers

Bekanntes Mitglied
Also ich habe es schnell mal bei mir getestet und es läuft wunderbar. Allerdings habe ich jetzt nicht auf die schnelle mit dem Appletviewer getestet, sondern nur das ganze in Eclipse ablaufen lassen.
 

Java-Freak

Bekanntes Mitglied
ich hab die klassen mal ins eclipe kopiert und laufen gelassen...
ich weiß ja nicht was das programm tun soll, aber ich sehe ein paar herumfliegende punkte in verschiedenen farben...
aber die button machen herzlich wenig...man sieht das einfach aber kann nichts machen...
edit: da war einer schneller:)
 

Anhänge

  • programm.jpg
    programm.jpg
    10,7 KB · Aufrufe: 33
Zuletzt bearbeitet:

knoppers

Bekanntes Mitglied
schreibe mal das Programm um und schreibe

Java:
			Button SunB = new Button("Sun");
			SunB.addActionListener(new AbstractAction() {
				
				@Override
				public void actionPerformed(ActionEvent arg0) {
					System.out.println("SunButton");
					
				}
			});

dann geht es auch

dann kannst dir so etwas sparen

Java:
addKeyListener(lm);
 

knoppers

Bekanntes Mitglied
Was ich überhaupt nicht verstehe ist. Wofür ist diese Methode gut? Die macht doch rein garnichts. Die wird und kann überhaupt nie aufgerufen werden.

Java:
		public void actionPerformed(ActionEvent event) {

			if (event.getActionCommand().equals("Sonne")) {
				System.out.println("SunButton");
			}
			if (event.getActionCommand().equals("Merkur")) {

			}
			if (event.getActionCommand().equals("Venus")) {

			}
			if (event.getActionCommand().equals("Erde")) {

			}
			if (event.getActionCommand().equals("Mars")) {

			}

		}

ebenso wie diese Methoden in BirdsEyeView überhaupt garnicht gerufen werden können.

Java:
		protected void processMouseEvent(FocusEvent event) {
			System.out.println("superdupa!!");
		}

		public void keyReleased(KeyEvent event) {

		}

		public void keyTyped(KeyEvent event) {

		}
 
Zuletzt bearbeitet:

knoppers

Bekanntes Mitglied
Ich habe es jetzt auch noch einmal mit dem Eclipse AppletViewer getestet aber mit meiner Änderung des Sun Buttons. Und da geht er dann auch wunderbar rein. Wenn ich es mit den Standard Sun AppletViewer teste funktioniert es auch bei mir nicht.
 
Zuletzt bearbeitet:

knoppers

Bekanntes Mitglied
Also hab jetzt nochmal geschaut. Eclipse erstellt bei dem Start von Applets eine Art Zertifikat mit dem er das Applet auf dem Rechner ausführen kann. Der AppletViewer macht dies nicht. Man müsste den AppletViewer dies erst erlauben.
 

Tonxxx

Bekanntes Mitglied
Ja und ich Lieb dich erst!!!! tschuldigung das du mit dir selber reden musstest, doch ich konnte am wochenende nicht an den Computer da ich gerade 18 wurde, und eine grosse Party zu Organisieren hatte, ihr müsst das verstehen :oops: . jedoch führt deine Lösung zu einem anderen Problem.
ich sag erstmal was ich getahn habe damit jemand sieht ob ich überhaupt alles richtig gemacht habe:

ich habe
Java:
        SunB.addActionListener(new AbstractAction() {
            


			@Override
            public void actionPerformed(ActionEvent arg0) {
                System.out.println("SunButton");
                
            }
        });

direkt in meinen konstruktor des LayoutManager geschrieben. das selbe natürlich auch für di anderen Buttons. und bis hier geht alles wunderbar vielen Dank nochmals!!!

doch da mein programm natürlich nicht nur einfach "Sunbutton" ausgeben soll, sondern auch etwas machen soll, kommt da noch mehr text rein. :

Java:
			running = false;
			mittelP = 0;
			while (th.isAlive()) {
				System.out.print("Sun");
			}
			running = true;
			th = new Thread(this); // Hier ist der Fehler, das "this" wird rot angeleuchtet
			th.start();

dies habe ich zum System.out.println("SunButton"); geschrieben, doch nun zeigt er mir einen Fehler. wenn ich nun das this rausnehme, ist er zwar glücklich, doch hält mein programm dann auch an. ab jetzt geht gar nichts mehr.

muss ich an statt von this was anderes schreiben, odr was muss ich tun?

nochmals vielen dank du hast es geschafft das mein programm einen wank tut, nur tut er noch nicht den richtigen wank :autsch: .
ich hoffe ihr helft mir dabei noch, und vorallem ihr könnt mir da weiter helfen.
 

knoppers

Bekanntes Mitglied
Das geht so nicht wie du das vorhast, da du in new Thread(this) den Thread sagen will das der Thread in der aktuellen Klasse sich befindet. Und dies ist falsch. Dies ist eine Annonyme Klasse.

Java:
        SunB.addActionListener(new AbstractAction() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                System.out.println("SunButton");
                
            }
        });

Du musst um dein Problem zu lösen etwas tricksen. So macht es z.B. Netbeans beim anlegen von ActionListener auf Buttons, usw. Du musst das ausgelöst Event auf dein Hauptklasse lenken (Klingt etwas Doof, aber so ungefähr ist es).

Java:
public void irgendeineMethode() {
        SunB.addActionListener(new AbstractAction() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                methodeArbeiteIrgendetwas();
            }
        });
}

public void methodeArbeiteIrgendetwas() {
      hier kommt dein Code rein .....
            running = false;
            mittelP = 0;
            while (th.isAlive()) {
                System.out.print("Sun");
            }
            running = true;
            th = new Thread(this); // Hier ist der Fehler, das "this" wird rot angeleuchtet
            th.start();
}

Dann muss es mit dem "new Thread(this)" gehen.
 

Tonxxx

Bekanntes Mitglied
Vielen vielen Dank!!! :toll: :applaus: :toll: :applaus: :toll: :applaus:
ihr helft hier wirklich super, vorallem geht mein dankeschön an knoppers!!! ohne dich hätte ich das wohl nie geschaft, danke das du dir die zeit genommen hast und dir gedanken gemacht hast, obwohl du mich nicht kennst. Wirklich von solchen Leuten wie dir gibt es heute nicht mehr all zu viele!!!
Vielen dank mein programm läuft! danke
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
T PNG Datei wird nur manchmal geöffnet Java Basics - Anfänger-Themen 6
C JOptionPane tritt manchmal bei Plugin in den Hintergrund Java Basics - Anfänger-Themen 2
Z Lottoprogramm - Zeigt manchmal nur 5 Zahlen statt 6 an? Java Basics - Anfänger-Themen 4
O if and else geht nur manchmal Java Basics - Anfänger-Themen 17
S Werte aus SingeltonKlasse sind manchmal =0 &manchmal !=0 Java Basics - Anfänger-Themen 1
A Wieso erscheinen die Objekte manchmal und manchmal nicht Java Basics - Anfänger-Themen 2
Q Compiler-Fehler Javaprogramm wird manchmal nicht ausgeführt? Java Basics - Anfänger-Themen 4
Developer_X Componente werden manchmal nicht angezeigt. Java Basics - Anfänger-Themen 8
X Java Eclipse Version: 3.4.1 meldet manchmal keine Fehler Java Basics - Anfänger-Themen 17
K Verschiebeoperatoren - manchmal falsche Ergebnisse Java Basics - Anfänger-Themen 7
G manchmal Objekt machmal nicht Java Basics - Anfänger-Themen 2
B Warum manchmal public class und manchmal nur class Java Basics - Anfänger-Themen 3
H OOP, wie gehts richtig? (Beispiel von meinem Prof) Java Basics - Anfänger-Themen 6
T JLabel richtig anordnen? wie gehts? Java Basics - Anfänger-Themen 9
T Input/Output HTTP 403 aber im Browser gehts Java Basics - Anfänger-Themen 2
T Collections Werte aus einer HashMap auslesen, oder gehts auch einfacher ? Java Basics - Anfänger-Themen 6
T Datentypen byte -Division..mal gehts mit cast mal ohne Java Basics - Anfänger-Themen 5
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
Screen Gehts ohne SecurityManager ? Java Basics - Anfänger-Themen 6
Y BufferdImage schreiben, unter Vista gehts, unter Ubuntu nicht... Java Basics - Anfänger-Themen 9
H2SO3- dreieck, bild --> maus klick event. Wie gehts? Java Basics - Anfänger-Themen 10
C Quellcode richtig bisher? wie gehts weiter? Java Basics - Anfänger-Themen 13
D Runtime Prozeß hängt sich auf. in der Kommandozeile gehts Java Basics - Anfänger-Themen 5
M unauffindbarer Fehler Console, aber unter Eclipse gehts. =( Java Basics - Anfänger-Themen 6
C Wie gehts weiter? Java Basics - Anfänger-Themen 6
J neues gui hinzugefügt .... jetzt gehts nicht mehr Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben