# TextField inhalt in int umwandeln



## marcopolo (4. Jul 2006)

folgendes problem:
ich möchte eine zahl aus einem TextField auslesen und z.b. das quadrat dieser zahl ausgeben,
dazu folgender quelltext:

```
public class CalculatorFrame extends JFrame implements ActionListener{

	JLabel label = new JLabel("Zahl:");
	JTextField txt1 = new JTextField(10);
	JTextField txt2 = new JTextField(10);
	JButton button1 = new JButton("Quadrat");
	JButton button2 = new JButton("2 hoch x");
	JButton button3 = new JButton("Fakultaet");
	
	public CalculatorFrame(){
		init();
	}
	private void init(){
		
	
		JPanel panel = new JPanel();
		panel.setLayout(new FlowLayout());
		panel.add(label);
		panel.add(txt1);
		panel.add(button1);
		panel.add(button2);
		panel.add(button3);
		panel.add(txt2);
		this.setContentPane(panel);
		button1.addActionListener(this);
	}
	public void actionPerformed(ActionEvent e){
		Object x = e.getSource();
		
		if(x==button1){
			String erg =txt1.getText();
			txt2.setText(erg);
//wie kann ich erg in ein int umwandeln damit ich das quadrat ausgeben kann ???
		}
	}
}
```


----------



## André Uhres (4. Jul 2006)

```
String erg =txt1.getText();
            int zahl = 0;
            try{
                zahl = Integer.parseInt(erg);
            }catch(NumberFormatException ex){
                //Fehlerbehandlung
            }
            txt2.setText(""+zahl);
```


----------



## marcopolo (4. Jul 2006)

danke schön,
hat alles geklappt


----------



## Guest (7. Jul 2006)

Hi,

ich hab mit dem Auslesen noch so meine Probleme.. meine Klasse zum Auslesen: 


```
public int getInput() {		
		try{
			return Integer.parseInt(this.getText());
		}catch(NumberFormatException e) {			
		}		
		return 0;		
	}
```

Aber es geht nicht.. er gibt immer 0 zurück... das return 0 kann ich nicht weglassen.. und wenn ich den try-Block weglasse bekomm ich immer ne Exception geworfen.. Liegt das an der Methode oder daran, daß ich das mit nem KeyListener benutze? der wiefolgt aussieht:


```
this.addKeyListener(new KeyListener() {
			public void keyTyped(KeyEvent k) {
				if(m_tile.isFree(getInput())){
					setColor(0, 255, 0);
					m_tile.setFree(getInput(), false);
				}else {
					setColor(255, 0, 0);					
				}
			}
			
			public void keyPressed(KeyEvent k) {
				
			}
			
			public void keyReleased(KeyEvent k) {
				
			}
		});
```


----------



## dieta (7. Jul 2006)

Wenn du ohne den try-catch-Block eine Exception ausgeworfen bekommst, übergibst du parseInt irgendwelche falschen Daten.


----------



## Guest (7. Jul 2006)

ich übergebe parseInt die Methode getText() von nem JTextField oder kann das daran liegen, daß ich dem JTextField ne neue Schrift (this.setFont(new Font("My Font", Font.BOLD, 50)) verpasst habe?


----------



## André Uhres (7. Jul 2006)

Mach mal ein KSKB.

<--


----------



## Guest (7. Jul 2006)

```
public class SField extends JTextField {		
	 
	private STile m_tile = null;
	
	
	private int m_number = 0;

	
	public SField(STile tile) {
		
		//set the size of the SField's
		this.setPreferredSize(new Dimension(50, 50));
		this.setMinimumSize(new Dimension(50, 50));
		this.setMaximumSize(new Dimension(500, 500));
		
		//some font settings
		this.setHorizontalAlignment(0);
		this.setFont(new Font("My Font", Font.BOLD, 50));
		this.m_tile = tile;
		
		//add KeyListener
		this.addKeyListener(new KeyListener() {
			public void keyTyped(KeyEvent k) {
				if(m_tile.isFree(getInput())){
					setColor(0, 255, 0);
					m_tile.setFree(getInput(), false);
				}else {
					setColor(255, 0, 0);					
				}			
			}
			
			public void keyPressed(KeyEvent k) {
	
			}
			
			public void keyReleased(KeyEvent k) {
				
			}
		});
	}
	
	
	public void setOutput(int number) {
		this.setText(Integer.toString(number));
	}
	
	
	public int getInput() {		
		try{
			return Integer.parseInt(this.getText());
		}catch(NumberFormatException e) {			
		}
		return 0;
	}
	
	
	public void setColor(int r, int g, int b) {
		this.setForeground(new Color(r, g, b));
	}
	
	public int getNumber() {
		return m_number;
	}
	
	
	public void setNumber(int number) {
		m_number = number;
	}

}
```

Also das ist die Klasse in der sich alles abspielt..


----------



## André Uhres (7. Jul 2006)

Anonymous hat gesagt.:
			
		

> ..Also das ist die Klasse in der sich alles abspielt..


Schon besser. Ist aber immer noch kein KSKB.
Was willst du denn machen? Der KeyListener ist jedenfalls dem Textfeld immer ein Zeichen voraus.


----------



## Guest (9. Jul 2006)

Es soll in Sudoku Spiel werden.. und naja ich muss das ja gleich auslesen wenn der Benutzer was eingiebt. Aber ich kapier echt nicht warum er das nicht richtig umwandeln kann...


----------

