StringTokenizer

Status
Nicht offen für weitere Antworten.

Vril

Bekanntes Mitglied
Hab ein kleines Zeichenprogramm geschrieben das nach einem Button klick ein Rechteck zeichnet. Die Koordinaten des Rechtecks (incl. Maße) sollen dem Programm über ein Textfeld übergeben werden.
Hier setze ich mit dem StringTokenizer an, doch der Compiler bringt bereits folgende Fehlermeldung:

  • cannot find symbol
    symbol : constructor StringTokenizer(java.awt.TextField,java.lang.String)
    location: class java.util.StringTokenizer
    StringTokenizer Werte = new StringTokenizer(Koordinaten,",");
    -------------------------------^

Hat jemand eine Idee an was das liegen könnte?

Code:
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Zeichenprogramm extends Frame implements ActionListener{
	
	private Button Rechteck, RERot;
	private TextField Koordinaten;
	String xk,yk,bk,hk;
	int x,y,b,h;
	
	public Zeichenprogramm (String title) {
		
		//das Frame definieren
		super(title);
		setSize(800,600);
		setVisible(true);
		setLayout(null);
		
		//die Buttons einbauen und verbinden
		Rechteck = new Button ("Rechteck");
		add(Rechteck);
		Rechteck.setBounds(25,25,100,25);
		Rechteck.addActionListener(this);
		
		RERot = new Button ("RE rot");
		add(RERot);
		RERot.setBounds(150,25,100,25);
		RERot.addActionListener(this);
		
		Label Koordlabel = new Label("Koordinaten eingeben(x,y,b,h): ");
		add(Koordlabel);
		Koordlabel.setBounds(25,75,150,25);
		
		Koordinaten = new TextField(12);
		add(Koordinaten);
		Koordinaten.setBounds(200,75,150,25);
		Koordinaten.addActionListener(this);
		
		StringTokenizer Werte = new StringTokenizer(Koordinaten,",");
		xk = Werte.nextToken(); int x = Integer.parseInt(xk);
		yk = Werte.nextToken();
		bk = Werte.nextToken();
		hk = Werte.nextToken();
		
	
	}
	public void actionPerformed(ActionEvent event){
		if (event.getSource() == Rechteck)
	   x = Integer.parseInt(xk);
	   y = Integer.parseInt(yk);
	   b = Integer.parseInt(bk);
	   h = Integer.parseInt(hk);
		
		//if (event.getsource() == RERot)
		
		
		repaint();
	}
	public void paint(Graphics g) {
		g.drawRect(x,y,b,h);
	}
	public static void main (String[] args){
		new Zeichenprogramm("Ein kleines Zeichenprogramm");
	}
}
 

Dreezard

Bekanntes Mitglied
Also du übergibst dem StringTokenizer Konstruktor ein TextField und einen String. Es gibt aber nur Konstruktoren mit Strings. Wenn du den Wert des Fields willst musst du: StringTokenizer Werte = new StringTokenizer(Koordinaten.getText(),","); schreiben
 

Vril

Bekanntes Mitglied
@Dreezard
Schon mal danke! Jetzt bin ich einen Schritt weiter!

Jetzt wird sauber compilet, aber zeichnen tut er leider noch nichts.

Noch eine Idee an was das liegen könnte?
 

Dreezard

Bekanntes Mitglied
Also so geht das auch nicht. Den Tokeniser musst du schon in den actionlistener setzten und dann auch jeden wert parsen. Also so geht's:
Code:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class Zeichenprogramm extends JFrame implements ActionListener{

   private Button Rechteck, RERot;
   private TextField Koordinaten;
   String xk,yk,bk,hk;
   int x,y,b,h;

   public Zeichenprogramm (String title) {

      //das Frame definieren
      super(title);
      setSize(800,600);
      setVisible(true);
      setLayout(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      //die Buttons einbauen und verbinden
      Rechteck = new Button ("Rechteck");
      add(Rechteck);
      Rechteck.setBounds(25,25,100,25);
      Rechteck.addActionListener(this);

      RERot = new Button ("RE rot");
      add(RERot);
      RERot.setBounds(150,25,100,25);
      RERot.addActionListener(this);

      Label Koordlabel = new Label("Koordinaten eingeben(x,y,b,h): ");
      add(Koordlabel);
      Koordlabel.setBounds(25,75,150,25);

      Koordinaten = new TextField(12);
      add(Koordinaten);
      Koordinaten.setBounds(200,75,150,25);
      Koordinaten.addActionListener(this);




   }
   public void actionPerformed(ActionEvent event){
      if (event.getSource() == Rechteck) {
          StringTokenizer Werte = new StringTokenizer(Koordinaten.getText(),",");
          x = Integer.parseInt(Werte.nextToken());
          y = Integer.parseInt(Werte.nextToken());
          b = Integer.parseInt(Werte.nextToken());
          h = Integer.parseInt(Werte.nextToken());
      }
      //if (event.getsource() == RERot)


      repaint();
   }
   public void paint(Graphics g) {
      g.drawRect(x,y,b,h);
   }
   public static void main (String[] args){
      new Zeichenprogramm("Ein kleines Zeichenprogramm");
   }
}
 

Vril

Bekanntes Mitglied
!!!
Habs schon gefunden. Hab das ganze nur zu public void actionPerformed.... schreiben müssen!

Jetzt wäre es noch interessant wie man es am besten anstellt das Rechteck zum Beispiel zusätlich mit einer Farbe zu füllen. Den Button hab ich ja schon angelegt, aber wie und wo bau ich da noch was ein damit es auch funktioniert?
 

Dreezard

Bekanntes Mitglied
Also dazu solltest du mal in der API unter Color-objekte und der funktion fillRect() und setColor() von Graphics gucken
 

Dreezard

Bekanntes Mitglied
und weil ich grad nix zu tun hab ^^:
Code:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class Zeichenprogramm extends JFrame implements ActionListener{

   private Button Rechteck, RERot;
   private TextField Koordinaten;
   String xk,yk,bk,hk;
   int x,y,b,h,button;

   public Zeichenprogramm (String title) {

      //das Frame definieren
      super(title);
      setSize(800,600);
      setVisible(true);
      setLayout(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      //die Buttons einbauen und verbinden
      Rechteck = new Button ("Rechteck");
      add(Rechteck);
      Rechteck.setBounds(25,25,100,25);
      Rechteck.addActionListener(this);

      RERot = new Button ("RE rot");
      add(RERot);
      RERot.setBounds(150,25,100,25);
      RERot.addActionListener(this);

      Label Koordlabel = new Label("Koordinaten eingeben(x,y,b,h): ");
      add(Koordlabel);
      Koordlabel.setBounds(25,75,150,25);

      Koordinaten = new TextField(12);
      add(Koordinaten);
      Koordinaten.setBounds(200,75,150,25);
      Koordinaten.addActionListener(this);




   }
   public void actionPerformed(ActionEvent event){
      StringTokenizer Werte = new StringTokenizer(Koordinaten.getText(),",");
          x = Integer.parseInt(Werte.nextToken());
          y = Integer.parseInt(Werte.nextToken());
          b = Integer.parseInt(Werte.nextToken());
          h = Integer.parseInt(Werte.nextToken());

      if (event.getSource() == Rechteck)
          button = 1;

      else if (event.getSource() == RERot)
          button = 2;



      repaint();
   }
   public void paint(Graphics g) {
      if(button == 1) {
          g.setColor(Color.black);
          g.drawRect(x,y,b,h);
      }
      else if(button == 2) {
          g.setColor(Color.red);
          g.fillRect(x,y,b,h);
      }
   }
   public static void main (String[] args){
      new Zeichenprogramm("Ein kleines Zeichenprogramm");
   }
}
 

Vril

Bekanntes Mitglied
@Dreezard
Danke. Aber das mein ich ja nicht, also wie man die Sachen zeichnet ist mir klar. Ich mein nur brauch ich dazu am besten gleich eine eigene Klasse oder kann ich z.B. auch direkt nach if zeichnen lassen?
 

Dreezard

Bekanntes Mitglied
noch son kleiner Tipp am rande. schreib die Variablen namen besser klein. Ließt sich besser. Achja. Und ich hab das zum JFrame gemacht, da ich mit der Zeile setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
das Fenster schließen konnte (is praktischer beim Testen)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Problem mit Konsolenausgabe bei StringTokenizer Java Basics - Anfänger-Themen 2
B StringTokenizer Java Basics - Anfänger-Themen 11
L Textfile mit StringTokenizer einlesen und sortiert ausgeben Java Basics - Anfänger-Themen 8
M StringTokenizer macht Quatsch Java Basics - Anfänger-Themen 21
S StringTokenizer; countTokens() Java Basics - Anfänger-Themen 6
J StringTokenizer? Java Basics - Anfänger-Themen 2
V StringTokenizer für Rechenzeichen Java Basics - Anfänger-Themen 12
C StringTokenizer Delimiter " " "??? Java Basics - Anfänger-Themen 2
M java.lang.StringTokenizer Java Basics - Anfänger-Themen 4
X StringTokenizer immer nur ein Zeichen Java Basics - Anfänger-Themen 12
T OOP StringTokenizer, Zuweisung der einzelnen Attribute Java Basics - Anfänger-Themen 21
B Fragen zu StringTokenizer? Java Basics - Anfänger-Themen 8
M String.split() und StringTokenizer Java Basics - Anfänger-Themen 2
G StringTokenizer Java Basics - Anfänger-Themen 4
J StringTokenizer Java Basics - Anfänger-Themen 3
G Array mit Stringtokenizer füllen Java Basics - Anfänger-Themen 2
P StringTokenizer Java Basics - Anfänger-Themen 2
V StringTokenizer Java Basics - Anfänger-Themen 2
P Rexex - stringtokenizer - String funktionen allgemein Java Basics - Anfänger-Themen 3
G Java StringTokenizer Java Basics - Anfänger-Themen 2
D StringTokenizer wirft Exception Java Basics - Anfänger-Themen 9
G StringTokenizer mit unterschiedlichen Delimitern Java Basics - Anfänger-Themen 7
G StringTokenizer - jedem Zeichen einen Bezeichner zuweisen Java Basics - Anfänger-Themen 4
S schwieriger String für StringTokenizer, wie am Besten ? Java Basics - Anfänger-Themen 8
U StringTokenizer soll in String-Array schreiben Java Basics - Anfänger-Themen 19
R StringTokenizer Java Basics - Anfänger-Themen 9
S StringTokenizer: Daten aus Datei auslesen Java Basics - Anfänger-Themen 11
S TreeSet und StringTokenizer Java Basics - Anfänger-Themen 6
C StringTokenizer Java Basics - Anfänger-Themen 3
A Problem StringTokenizer mit delimiters Java Basics - Anfänger-Themen 2
N Zeilenumbruch im StringTokenizer?? Java Basics - Anfänger-Themen 4
J StringTokenizer Hilfe !!!!!!!!!!! Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben