WinFuture-Forum.de: Paintcomponent-hilfe Nötig - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Paintcomponent-hilfe Nötig java ^^


#1 Mitglied ist offline   bluescorp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 323
  • Beigetreten: 23. Oktober 04
  • Reputation: 0
  • Wohnort:nähe Wien

geschrieben 26. April 2006 - 19:23

hi!

also es dreht sich um folgendes:

ich soll in einem JApplet einen Couter einbauen, der mir einfach nur die Zeit hochzählen lassen soll (die Zeit wird dann später noch benörtigt).

Jetzt hab ich das halt mit der normalen paint-Methode probiert, aber da überschreibt er einfach die vorherige Zahl und nach 3 Zahlen kann man nichts mehr erkennen ^^.

Hab nun meinen Lehrer gefragt und der hat mir nur als Antwort gegeben, dass ich eine gewisse paintComponent -Methode benutzen soll. Nur leider habe ich über diese Methode noch nie etwas gehört :rolleyes:

Tja, da diese Methode im Rahmen eines Projektes steckt, dass wir selber lösen sollen, hat er gemeint ich soll das Internet absuchen und die JavaDocu lesen.. nun ja, da ich keinen Schimmer habe wie man die JAvaDoc richtig und sinnvoll lesen kann und im Internet nichts gefunden hab (kA sry) wollt ich mal fragen ob ihr mir vielleicht helfen könnt einen einfachen, kleinen Couter der sich einfach nur pro Sekunde um +1 erhöht, an zu fertigen.

Wäre euch sehr dankbar!

mfg
0

Anzeige



#2 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

  geschrieben 26. April 2006 - 21:15

Moin,

da ich nicht weiss, was genau du brauchst, versuchs mal hiermit:

Erstelle eine neue Klasse, nenne sie Count.class und kopiere das hier hinein:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.Timer;

public class Count extends JLabel
{
	/**
	 * Aktueller Sekundenwert.
	 */
	private int currentValue;
	
	private Timer timer;
	
	/**
	 * Konstruktor.
	 */
	public Count()
	{
		super();
		this.currentValue = 0;
		this.timer = new Timer(1000, new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0)
			{
				currentValue++;
				setText("Zeit:" + currentValue);
				repaint();
			}
		
		});
	}
	
	/**
	 * Startet den Timer.
	 *
	 */
	public void start()
	{
		this.timer.start();
	}
	
	/**
	 * Stoppt den Timer.
	 *
	 */
	public void stop()
	{
		this.timer.stop();
	}
	
	/**
	 * Gibt den aktuellen Sekundenwert zurück.
	 * @return Aktueller Sekundenwert.
	 */
	public int getSeconds()
	{
		return this.currentValue;
	}

}


Füge dann deinem Applet ein Objekt vom Typ Count hinzu. Den Timer kannst du mit start() starten, mit stop() anhalten und getSeconds() gibt dir die verstrichene Zeit zurück.
0

#3 Mitglied ist offline   bluescorp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 323
  • Beigetreten: 23. Oktober 04
  • Reputation: 0
  • Wohnort:nähe Wien

  geschrieben 27. April 2006 - 19:17

hi!

also erstmals danke für die Bemühung, aber irgendwie dürft ich doch noch gröbere Lücken in JApplets haben -.-

import javax.swing.*;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

/**
 *Farb-Korb Spiel
 *Der Spieler soll zwei Körbe steuern und mit ihnen farbige Bälle die von oben kommen einfangen.
 *Ziel ist es, moeglichst nahe an einen Grauton heranzukomm, ausserdem soll die Farbdiffernz moeglichst gering sein
 *@author *****
 *@version 0.2
 */

public class FarbKorbSpiel extends JApplet implements ActionListener
{	private JLabel name;
	private JLabel schwierigkeitsgrad;
	private JLabel sound;

	private JButton start;
	private JButton restart;
	private JButton fertig;

	private JRadioButton easy;
	private JRadioButton normal;
	private JRadioButton hard;
	private JRadioButton nightmare;

	private JRadioButton on;
	private JRadioButton off;

	private ButtonGroup schwierigkeitsstufen;
	private ButtonGroup toene;

	private JTextField zeit;  // ich nehm halt mal an, dass es sich um ein Textfeld handelt beim Counter

	private JSlider schieber;

	//Konstanten des Schiebereglers
	final int value = 50;
	final int min = 0;
	final int max = 100;

	private Korb spiel;

	private Count counter;

	private AudioClip tetris;


	public FarbKorbSpiel()
	{
	}

	public void init()
	{	//Name des Spieles
		name = new JLabel("Farb-Korb Spiel",JLabel.CENTER);

		//Ueberschrift: Schwierigkeitsgrad
		schwierigkeitsgrad = new JLabel("Schwierigkeitsgrad:");
		//Ueberschrift: Sound
		sound = new JLabel("Sound:");

		//Spielbuttons
		start = new JButton("Start");
		restart = new JButton("Restart");
		fertig = new JButton("Fertig");

		//Schwierigkeitsregler
		easy = new JRadioButton("easy");
		normal = new JRadioButton("normal");
		hard = new JRadioButton("hard");
		nightmare = new JRadioButton("nightmare");

		//Soundschalter
		on = new JRadioButton("on");
		off = new JRadioButton("off");

		zeit = new JTextField("Zeit"); // richtig so?

		JPanel p1 = new JPanel();
		JPanel p2 = new JPanel();
		JPanel p3 = new JPanel();

		//Zusammenfassung der Radiobuttons
		schwierigkeitsstufen = new ButtonGroup();
		toene = new ButtonGroup();

		schieber = new JSlider(JSlider.HORIZONTAL, min, max, value);

		spiel = new Korb();

		//Informationen anzeigen, wenn mit der Maus daruebergefahren wird
		start.setToolTipText("Klicken Sie hier um ein Spiel zu beginnen");
		restart.setToolTipText("Klicken Sie hier um ein Spiel abzubrechen um ein neues zu beginnen");
		fertig.setToolTipText("Klicken Sie hier wenn Sie der Meinung sind das best mögliche Ergebnis erreicht zu haben");

		easy.setToolTipText("Klicken Sie hier um den leichtesten Schwierigkeitsgrad auszuwählen");
		normal.setToolTipText("Klicken Sie hier um den mittleren Schwierigkeitsgrad auszuwählen");
		hard.setToolTipText("Klicken Sie hier um einen schweren Schwierigkeitsgrad auszuwähelen");
		nightmare.setToolTipText("Klicken Sie hier um einen extrem schweren Schwierigkeitsgrad auszuwählen");

		on.setToolTipText("Klicken Sie hier um den Spielton einzuschalten");
		off.setToolTipText("Klicken Sie hier um den Spielton auszuschalten");


		tetris = getAudioClip(getCodeBase(), "tetris.mid");


		Container c=this.getContentPane();

		zeit = new JTextField(15);

		// Layout
		c.setLayout(new BorderLayout());
		c.add(name, BorderLayout.NORTH);
		c.add(p1, BorderLayout.WEST);
		c.add(p2, BorderLayout.EAST);
		c.add(p3, BorderLayout.CENTER);

		//Linke Seite des Layouts
		p1.setLayout(new GridLayout(8,1,3,3));
		p1.add(schwierigkeitsgrad);
		p1.add(easy);
		p1.add(normal);
		p1.add(hard);
		p1.add(nightmare);

		p1.add(sound);
		p1.add(on);
		p1.add(off);

		//Rechte Seite des Layouts
		p2.setLayout(new GridLayout(4,1,3,3));
		p2.add(zeit);
		p2.add(start);
		p2.add(restart);
		p2.add(fertig);

		p3.setLayout(new BorderLayout());
		p3.add(spiel, BorderLayout.CENTER);
		p3.add(schieber, BorderLayout.SOUTH);



		//Radiobuttons zusammenfassen, sodass nur einer angeklickt werden kann
		schwierigkeitsstufen.add(easy);
		schwierigkeitsstufen.add(normal);
		schwierigkeitsstufen.add(hard);
		schwierigkeitsstufen.add(nightmare);

		toene.add(on);
		toene.add(off);


		start.addActionListener(this);
		restart.addActionListener(this);
		fertig.addActionListener(this);

		easy.addActionListener(this);
		normal.addActionListener(this);
		hard.addActionListener(this);
		nightmare.addActionListener(this);

		on.addActionListener(this);
		off.addActionListener(this);

		}
		public void actionPerformed(ActionEvent e)
		{	if(on.isSelected())
				tetris.loop();

			else
				tetris.stop();

			if(start.isSelected())
				// tja, und da häng ich dann komplett -.- ... wie mach ich das, dass er halt dann in das JTextField das reinschreibt?

		}
}


ich mein, falls du (oder sonst wer) Zeit hast (/hat) könnt ja auf dieses Layout dann das fertige Prog machen? *gg* Angabe steht ja ganz oben :huh:

falls sich da wirklich wer bereit findet, soll sich bei mir melden, dann gibts die gesamte Angabe :huh:

aber ich häng halt leider noch da: eben wie mach ich das, dass ich wenn ich auf start klicke, der dann im Zeit-Fenster die Zeit reinmacht.

Wo ich leider auch noch ein bissl hänge ist, wie mach ich das, dass wenn ich im design.class (jetzt nur zur Verdeutlichung!! (auch auf Skizze!)) den Schiebebalken nehme oder wenn ich bei Schwierigkeitsgrad einen anderen Wert einstelle, wie kann ich das in die spiel.class übernehmen?

ich hoff es kann mir wer helfen!
hab nur noch 6 Wochen zeit, aber da muss ja die Dokumentation auch noch dazu.

mfg

Angehängte Miniaturbilder

  • Angehängtes Bild: farb_korb_spiel.JPG

Dieser Beitrag wurde von bluescorp bearbeitet: 27. April 2006 - 19:20

0

#4 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

  geschrieben 27. April 2006 - 20:33

Moin,

Zitat

ich mein, falls du (oder sonst wer) Zeit hast (/hat) könnt ja auf dieses Layout dann das fertige Prog machen?

Wir helfen gerne, aber machen musst du's schon selber :huh:

Ist auch ganz simpel jetzt: Du kopierst meinen Code in eine Datei, die nennst du "Count.java".
Deinen Code änderst du dann wie folgt:
Aus
private JTextField zeit;  // ich nehm halt mal an, dass es sich um ein Textfeld handelt beim Counter

wird
private Count zeit;  // ich nehm halt mal an, dass es sich um ein Textfeld handelt beim Counter

und aus
zeit = new JTextField(15);

wird
zeit = new Count();
zeit.setBounds(0,0, 50, 20); //setzt position und grösse, nach bedarf anpassen

Tja, und ganz am Ende dann
if(start.isSelected())
	zeit.start();

Wenn du die Zeit dann irgendwann anhalten willst reicht ein
zeit.stop();


Zu deinem anderen Problem:

Zitat

Wo ich leider auch noch ein bissl hänge ist, wie mach ich das, dass wenn ich im design.class (jetzt nur zur Verdeutlichung!! (auch auf Skizze!)) den Schiebebalken nehme oder wenn ich bei Schwierigkeitsgrad einen anderen Wert einstelle, wie kann ich das in die spiel.class übernehmen?

Dazu erstellst du in deiner "spiel.java" Methoden, die du bei Änderungen im Design einfach aufrufst.
0

#5 Mitglied ist offline   bluescorp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 323
  • Beigetreten: 23. Oktober 04
  • Reputation: 0
  • Wohnort:nähe Wien

geschrieben 27. April 2006 - 22:05

Wir helfen gerne, aber machen musst du's schon selber :(


probieren kann mans ja ;)



zeit = new Count();
zeit.setBounds(0,0, 50, 20); //setzt position und grösse, nach bedarf anpassen



ok noch kurz: für was stehen die 4 Zahlen? x,y,usw?
weil: Compiler sagt jetzt nix mehr, aber ich seh halt nirgendwo den Counter.. hab auch shcon ein paar Zahlen durchprobiert, aber ohne Erfolg :)


Zu deinem anderen Problem:

Dazu erstellst du in deiner "spiel.java" Methoden, die du bei Änderungen im Design einfach aufrufst.


ok, ich denke wenn es soweit ist, werd ich mich wieder melden ;)

Dieser Beitrag wurde von bluescorp bearbeitet: 27. April 2006 - 22:07

0

#6 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 27. April 2006 - 22:54

Moin,

Zitat

probieren kann mans ja :)

:(

Zitat

ok noch kurz: für was stehen die 4 Zahlen? x,y,usw?

die Zahlen definieren ein Viereck, in dem der Zähler angezeigt wird. Die ersten zwei Zahlen bestimmen die obere linke Ecke dieses Vierecks, die anderen beiden die Breite und die Höhe.
0

#7 Mitglied ist offline   bluescorp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 323
  • Beigetreten: 23. Oktober 04
  • Reputation: 0
  • Wohnort:nähe Wien

geschrieben 18. Mai 2006 - 23:37

So, dass betrifft jetzt eher MNG aber die anderen können gerne mittüfteln ;)

Ich hab mal als Anhang den Quellcode von allem was wir bis jetzt haben unten angehängt, damit du/ihr das euch mal anschauen könnt was wir bis jetzt (falsch?) haben.

blabla usw .. alles geklärt ^^
So zu den Problemen:
  • Der Counter läuft zwar, aber er zeigt mir immer Null an :/
  • Wie oben schon erwähnt, der Zufallsgenerator spinnt komplett rum
  • Wir schaffen es nicht, dass nachdem ein Ball runter geflogen ist, ein zweiter Ball nachkommt
  • Ich weiß einfach nicht wie ich dem Programm sage, dass wenn ich einen Schiebebalken beweg dann in der anderen Klasse sich etwas bewegt (zB mit dem Korb hin und her fahren).. dito mit einer Eingabe bei JApplets (Highscore)
Najo das sind dann mal die größten Sorgen die wir haben :) aber da gibts sicherlich noch mehr was uns fehlen wird :)
Vielleicht (Hoffentlich!) findet sich jemand der uns beiden Noob-Programmieren aus der Patsche helfen kann, es wäre wirklich sehr _sehr_ SEHR dringend! :)

mfg, blue&Partner

Angehängte Datei(en)


Dieser Beitrag wurde von bluescorp bearbeitet: 04. Juni 2006 - 15:11

0

#8 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 19. Mai 2006 - 12:13

Moin,

Das Archiv ist beschädigt (unerwartetes Dateiende), kann zwar die Files sehen aber nicht alle entpacken.
Naja, egal.
Viel habt ihr ja nicht geschafft ;)
Ich hab' euch jetzt mal schnell das Spiel zusammengeschis*en, es fehlt jede Menge Feinschliff.
Ihr müsst jetzt hauptsächlich noch die Buttons usw. in das rechtseitige Panel werfen.
Dazu editiert ihr die Datei "OptionenPanel.java".

Seht euch den Code an, wenn ihr was nicht versteht, dann lest erstmal bei Sun in der Java-Doku nach, wenn das auch nicht hilft dann schick' mir 'ne PM. Antwort könnte aber etwas dauern, bin momentan etwas eingespannt. ;)

Ah so: Gesteuert wird mit A und D (Eimer 1) bzw. Pfeil-Links und Pfeil-Rechts (Eimer 2).
Falls das nicht klappt müsst ihr mit der Maus einmal in die Spielfläche klicken, da stimmt irgendwas mit dem Focus nicht. :blink:

Angehängte Datei(en)

  • Angehängte Datei  index.zip (6,02K)
    Anzahl der Downloads: 130

Dieser Beitrag wurde von MNG bearbeitet: 19. Mai 2006 - 17:34

0

#9 Mitglied ist offline   bluescorp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 323
  • Beigetreten: 23. Oktober 04
  • Reputation: 0
  • Wohnort:nähe Wien

geschrieben 20. Mai 2006 - 08:42

Du bist mein persönlicher Held :blink:

Da ich jetzt selber auf Sportwoche von Sonntag bis Donnerstag bin werd ich dich eh nix fragen können ;) allerdings doch weiter an dem Projekt arbeiten (nehme Laptop mit damit wir dran arbeiten können)

Habe mal so spaßhalber alles kompiliert, bis auf die Ball und Statuszeile kommen überall ein Haufen mit Fehlern ^^ :imao:
zB wenn ich die Eimer.java kompiliere sagt er:

cannot resolve symbol symbol : class Ball
location: class spiel.Eimer
public int abstand(Ball ball)
^ ( Der ^ Pfeil gehört unter Ball)
Das zieht sich halt durch alle Files durch, das er nicht auf das andere zugreifen kann -.-

Najo, wir werden uns den Code nächste Woche ordentlich zu Gemühte führen, denke aber, dass sicherlich noch ein paar Fragen aufkommen werden ;)

Danke für deine Antwort und das du dir die Arbeit für uns gemacht hast ;)

Das mit dem Entpacken liegt wohl daran, dass du wahrscheinlich nicht WinRAR (wurde mit der 3.60beta_1 gepackt) hast, denn bei uns hats funktioniert.

mfg

Dieser Beitrag wurde von bluescorp bearbeitet: 20. Mai 2006 - 08:46

0

#10 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 20. Mai 2006 - 09:07

Moin,

der Compiler-Fehler kommt daher, dass du den Classpath nicht gesetzt hast.
Beim Kompilieren einfach statt
javac Eimer.java

folgendes tippen
javac -cp "Verzeichnis" Eimer.java

wobei Verzeichnis der Pfad zum Oberverzeichnis des Programms ist (also der Ordner, in dem bei euch die index.html liegt).
0

#11 Mitglied ist offline   bluescorp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 323
  • Beigetreten: 23. Oktober 04
  • Reputation: 0
  • Wohnort:nähe Wien

geschrieben 20. Mai 2006 - 13:01

öhm wenn ich im Command eingeb

C:\j2sdk1.4.2_11\bin>javac -cp C:\Projekt\mng\ Eimer.java

sagt er mir -cp gibts nicht... also halt auschreiben:

C:\j2sdk1.4.2_11\bin>javac -classpath C:\Projekt\mng\ Eimer.java
error: cannot read: Eimer.java
1 error

:/

bei TextPad-Kompilierung auch geändert

siehe hier

Baumstruktur sieht so aus: C:\Projekt\mng\ und da dann halt spiel,grafik,main-ordner inklusive index.html

ebenfalls ohne Erfolg (wie man im Hintergrund sieht)

Dieser Beitrag wurde von bluescorp bearbeitet: 20. Mai 2006 - 13:13

0

#12 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 20. Mai 2006 - 19:12

Moin,

javac ist da eigenwillig. Entweder
C:\j2sdk1.4.2_11\bin>javac -cp "C:\Projekt\mng\" "C:\Projekt\mng\spiel\Eimer.java"


oder
C:\Projekt\mng\spiel> "C:\j2sdk1.4.2_11\bin\javac" -cp "C:\Projekt\mng\" Eimer.java


Und -cp sollte eigentlich gehen.... warum er dat ausgeschrieben haben will :rolleyes:
0

#13 Mitglied ist offline   bluescorp 

  • Gruppe: aktive Mitglieder
  • Beiträge: 323
  • Beigetreten: 23. Oktober 04
  • Reputation: 0
  • Wohnort:nähe Wien

geschrieben 21. Mai 2006 - 05:21

C:\j2sdk1.4.2_11\bin>javac -classpath "C:\Projekt\mng\" "C:\Projekt\mng\spiel\Eimer.java"
javac: no source files

bzw

C:\j2sdk1.4.2_11\bin>javac -classpath "C:\Projekt\mng\" "C:\Projekt\mng\spiel\Eimer.java"
javac: no source files

hmm.. haut auch irgendwie nicht hin oO

könntest du das kompilierte einfach hier noch dran hängen mal zum Testen wie das alles aussieht (dann kann man sich mehr darunter vorstellen) .. ich hoffe, dass wir da unten wenigstens kurz ins inet können

mfg

Dieser Beitrag wurde von bluescorp bearbeitet: 21. Mai 2006 - 05:22

0

#14 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

  geschrieben 21. Mai 2006 - 10:41

Moin,

also, den zweiten der Befehle die ich geschrieben hatte, den hättste im bla\bla\spiel - Ordner ausführen müssen. Vielleicht stört sich javac auch daran, dass der Classpath mit 'nem "\" endet. :)
Nuja, egal:

Angehängte Datei(en)

  • Angehängte Datei  index.zip (13,64K)
    Anzahl der Downloads: 92

0

#15 Mitglied ist offline   MNG 

  • Gruppe: aktive Mitglieder
  • Beiträge: 293
  • Beigetreten: 29. März 06
  • Reputation: 0

geschrieben 03. Juni 2006 - 13:44

Sodele...

Knöppe tun alle was sie sollen, der Slider regelt die Geschwindigkeit, die Dropdown-Box die Anzahl der Bälle.
Was ihr noch tun müsst: Entweder an euer Layout anpassen (oder es lassen...), den Highscore anzeigen (wird in Eimer.java für jeden Korb gespeichert), feddich.

Angehängte Datei(en)

  • Angehängte Datei  Code.zip (21,12K)
    Anzahl der Downloads: 93

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0