Probleme mit dem Ball (beim auslesen des Textfeldes)

DaSashStYle

Mitglied
Also ich habe folgendes Problem. Ich schreibe am Freitag eine Klausur über Java.
wir haben eine Aufgabe bekommen in der es hieß, wir sollen ein Programm schreiben,
wo zwei Textfelder und zwei Button sein sollen. als ergebnis soll man in das erste textfeld
die Größe der Kugel und die geschwindigkeit ind das zweite mit der sie sich hin und her
bewegen soll. Wenn man auf den Zwieten butten klickt soll alles gestoppt werden und
man soll neue werte eingeben können

ich hab soweit so gut fast alles hinbekommen. es gibt nur noch probleme beim auslesen
der textfelder, so, dass der werd auch für die Größe genommen wird.

Außerdem weiß ich cniht wie ich es realisieren kann, das der Ball sich hin und her bewegt.

Kann mir da jemand helfen?

Ich stelle erstmal mein script hier herein. Teillösungen oder fertige, werden mir ganz sicher
weiterhelfen. LIeb wäre noch eine erklärung dazu was noch mit zukommt. Das ganze soll
logischer weise in einem Applet passieren.

******************************************************************************************
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
/**
*NAME ENTFERNT
*Version 1.1
*/
public class DerBall extends Applet
{
private int geschwindigkeit = 0;
private int groesse = 0;

java.awt.TextField size1 = new java.awt.TextField();
java.awt.TextField geschw1 = new java.awt.TextField();
java.awt.Button erzeugen = new java.awt.Button();
java.awt.Button aendern = new java.awt.Button();


public void init()
{
size1.setVisible(true);
size1.setLocation(20,20);
size1.setSize(50,30);
geschw1.setVisible(true);
geschw1.setLocation(20,70);
geschw1.setSize(50,30);
erzeugen.setVisible(true);
erzeugen.setLabel("Ball erzeugen");
erzeugen.setLocation(100,20);
erzeugen.setSize(120,30);
aendern.setVisible(true);
aendern.setLabel("aendern");
aendern.setLocation(100,70);
aendern.setSize(120,30);

setLayout(null);

add(size1);
add(geschw1);
add(erzeugen);
add(aendern);

}

public void actionPerformed (ActionEvent ae)
{
if(ae.getSource()==erzeugen)
{
int durchm = Integer.parseInt(size1.getText());
int geschw2 = Integer.parseInt(geschw1.getText());
groesse = durchm;
geschwindigkeit = geschw2;
}
}
public void paint( Graphics g)
{
g.setColor(Color.black);
g.fillOval(20,200,groesse,groesse);
}

}


******************************************************************************************
 
Zuletzt bearbeitet:
So dass ist viel. mal ein kleiner Ansatz! das mit der Geschw. hab ich nicht ganz verstanden soll der pro sec seine Location um den wert ändern oder wie?
Falls was unklar ist einfach fragen!
Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.awt.Graphics;
/**
*
*Version 1.1
*/
public class DerBall extends Applet
{
private int geschwindigkeit = 0;
private int groesse = 0;

java.awt.TextField size1 = new java.awt.TextField();
java.awt.TextField geschw1 = new java.awt.TextField();
java.awt.Button erzeugen = new java.awt.Button();
java.awt.Button aendern = new java.awt.Button();


public void init()
{
size1.setVisible(true);
size1.setLocation(20,20);
size1.setSize(50,30);

geschw1.setVisible(true);
geschw1.setLocation(20,70);
geschw1.setSize(50,30);
erzeugen.setVisible(true);
erzeugen.setLabel("Ball erzeugen");
erzeugen.setLocation(100,20);
erzeugen.setSize(120,30);
aendern.setVisible(true);
aendern.setLabel("aendern");
aendern.setLocation(100,70);
aendern.setSize(120,30);

setLayout(null);

add(size1);
add(geschw1);
add(erzeugen);
add(aendern);
erzeugen.addActionListener(new ActionListener(){

	public void actionPerformed(ActionEvent arg0) {

		int durchm = Integer.parseInt(size1.getText());
		int geschw2 = Integer.parseInt(geschw1.getText());
		groesse = durchm;
		geschwindigkeit = geschw2;
		paint();
		size1.setEnabled(false);
		geschw1.setEnabled(false);
	}
	
});
aendern.addActionListener(new ActionListener(){

	public void actionPerformed(ActionEvent arg0) {
		size1.setEnabled(true);
		geschw1.setEnabled(true);
	}
	
});
}


public void paint()
{
	Graphics g=this.getGraphics();
	g.drawOval(100,120,groesse,groesse);
	   

}
}
 
der soll in einer Sekunde die angegebene Strecke in pixeln zurückl legen. Sorry, für die knappe antwort, muss aber mal eben shcnell zur arbeit. bin in zwei stunden wieder da
 
Hab es einfach mal kopiert und eingefügt

das problem ist, dass die angegebene Größe nicht übergeben wird denke ich. Weil wenn ich in das feld im applet z.B. 20 eingebe, und dann auf den button erzeugen klicke, passiert gar nicht, woran könnte das genauer liegen? kann mir da jemand weiterhelfen?
 
also! dann liegts nicht an dem code! denn bei mir erzeugt er einen runden kreis mit schwarezer linie! die textfelder werden auf nicht schreibbar gesetzt! das einzige was ich dir nicht mitprogrammiert habe ist die geschwindigkeit! Mit welchen editor arbeitest du? würde dir auf jeden fall Eclipse ca. 120mb empfehlen dort ganz du direkt die applets testen!
 
Ich arbeite mit dem Programm BlueJ. Ich persönlich finde das program richtig ranzig, aber unser lehrer kann nichts anderes lol. ich werds mal eben mit CodeWarrior versuchen.

Das mit der Geschwindigkeit würde ich dneke ich mal jetzt auch selber hinbekommen. aber erstmal soll es so funktionieren.
 
muss ich den ball noch vorher auf visible setzten? oder auch mit add() dem Applet hinzuffügen?

Wenn ja, wie mache ich das? ich kann dazu ja keine Variable benutzen.

kann es mir im Grunde auch ncciht vorstellen, denn wenn ich an der Methode

public void paint()
{
Graphics g=this.getGraphics();
g.drawOval(100,120,groesse,groesse);
}


die Variable "groesse" durch zwei feste Werte ersetzte wird ein Kreis gezeichnet.

Gibt es noch jemanden der mir da helfen kann?
 
hast du auch in beide textfelder zahlen reingeschrieben? ansonst schmeißt er dir eine exeption!

ansonst musst du im code eine if anweisung programmieren!
Code:
if(size1.getText()!="")
                int durchm = Integer.parseInt(size1.getText());
else
               durchm=0;
if(geschw1.getText()!="")
		int geschw2 = Integer.parseInt(geschw1.getText());
else
                geschw2= 0;

		groesse = durchm;
		geschwindigkeit = geschw2;
		paint();
		size1.setEnabled(false);
		geschw1.setEnabled(false);
 
oh, das war der fehler, ich hatte immer nur in das Feöld für die größe eine zahl eingegeben. völlig logisch, dass er es nicht ausführt.... nu funktioniert es und ich will daran gehen, dass sich der ball auch bewegt!

Danke dir!

Werde wieder schrieben wenn ich nicht weiterkommen sollte.
 
Hallo, wollte mich nochmal bei allen bedanken die sich über mein Problem Gedanken gemacht haben und mir mögliche Lösungen gepostet haben.
Die Klausur habe ich nun erfolgreich hinter mir.

Mit dem Poblem der Geschwindigkeit habe ich mich allerdings in diesem Zusammenhang nicht mehr beschäftigt.

Sollte ich dafür nochmal Zeit finden werde ich die Lösung hier reinstellen um evtl. anderen damit helfen zu können.

Danke nocheinmal an Alle.
 
Zurück