Ratespiel

Loud Silence

Bekanntes Mitglied
Hab mich an einem kleinen Ratespiel versucht:

Java:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Ratespiel extends Applet implements ActionListener {

	Button b1;
	TextField tb;
	int i;
	Label l;
	public void init()
	{
		
		b1 = new Button("OK");
		add(b1);
		b1.addActionListener(this);
		tb = new TextField();
		tb.setColumns(10);
		add(tb);
		i = (int) (Math.random()*3+1);
		l = new Label();
		l.setSize(500, 500);
		l.setForeground(Color.red);
		add(l);
	}
	
	public void actionPerformed(ActionEvent e) {
		
		 	if (e.getSource() == b1)
		{
		if (tb.getText().equals(String.valueOf(i)))
		{
			l.setText("Richtig geraten");
		}
		
			
		}
	}
}

Bis dahin ist auch alles gut, jetzt soll aber l ="Zu klein/groß" sein wenn der Wert zu klein/groß ist.
Wie mach ich das?
 

njans

Top Contributor
Ich kann gerade nicht ganz deiner Frage folgen.

Also, ich weiß nun nicht genau, wo genau du das ahebn willst, aber dzu kannst dir ja den Wert aus dem Feld besorgen.
Integer.valueOf(String); kannst du auf Strings aufrufen um den int Wert davon zu bekommen.
Den kannst du dann mittels einer if-Abfrage oder eines switches so Abfragen, wie du es willst.

Ich sollte dich aber warnen, bei Integer.valueOf(String); solltest du darauf achten, dass es auch möglich ist, den String in einen Integer umzuwandeln, denn "baX;" wird dir eine expection werfen.
 
Zuletzt bearbeitet:
G

Gast2

Gast
Java:
if (eingegebeneZahlInTb > randomZahl) {
    l.setText("Zu groß");
}
;)

deine Randomzahl hast du ja schon. Die eingegebene bekommst du per
Code:
Integer.parseInt(tb.getText())
 
G

Gast2

Gast
Java:
int eingegebeneZahl = Integer.parseInt(tb.getText());
 

Loud Silence

Bekanntes Mitglied
Funktioniert.
Danke.
JAVA ist zu kompliziert:D
Da war VB 2010 ja Kindergarten.

Ein letztes Problem:
Es werden im Label immer nur die ersten 2 Buchstaben angezeigt.
Warum?
 
G

Gast2

Gast
Ließ dir bitte den Link durch von mir, da steht alles drin.
Du kannst als LayoutManager z.b. FlowLayout nehmen und dem label eine PreferredSize geben.
 
G

Gast2

Gast
Wenn das ne Frage war: Nein ;)
setLayout ist nicht statisch, die rufst du auf der Instanz deines Applets (in deinem Fall this) auf.
 
G

Gast2

Gast
Schaut doch ganz gut aus?
Java:
public class Ratespiel extends Applet implements ActionListener {

	Button b1;
	TextField tb;
	int i;
	Label l;

	public void init() {
		setLayout(new FlowLayout());
		b1 = new Button("OK");
		add(b1);
		b1.addActionListener(this);
		tb = new TextField();
		tb.setColumns(10);
		add(tb);
		i = (int) (Math.random() * 3 + 1);
		l = new Label();
		l.setPreferredSize(new Dimension(100, 30));
		l.setForeground(Color.red);
		add(l);
		setSize(250, 100);
	}

	public void actionPerformed(ActionEvent e) {
		l.setText("Richtig geraten");
	}
}
 
G

Gast2

Gast
Naja, besser ich sage dem Programm wie es die Komponenten anordnen soll, als dass das Programm das selbst entscheidet und ich das gar nicht so will ;)
Ich seh da wirklich keinen Nachteil drin.

Und wenn man sich mal mit LayoutManagern beschäftigt hat ist das wirklich kein hexenwerk mehr.
 

Fu3L

Top Contributor
Das man dem Programm beibringen muss, wie es seine Größe setzen soll.

Eigentlich ist es sogar bei LayoutManagern einer der Vorteile, dass das Programm die Größe selbst ermittelt, je nach dem, wie viel Platz der Inhalt einer Komponente braucht. Bei Textfeldern, die zu Beginn leer sind, kann das bei einigen LayoutManagern natürlich dazu führen, dass man die Größe selbst angeben muss. ;)
 

Ähnliche Java Themen

Neue Themen


Oben