# Erste Probe! drück die F1 - Taste! :-)



## Java-Schnüffler (8. Dez 2006)

Ich habe ein paar Male mit der Methode "JFormattedTextField" probiert. Dies ist meine erste Probe. Es scheint wohl zu sein, dass das mit der Eingabe von der Zahl im Textfeld geklappt hat. Aber die Zahl 0 wird immer wieder im Textbereich angezeigt, wenn man irgendeine Zahl eingibt. Was habe ich falsch gemacht? Es wäre schön, wenn es eine Lösung gäbe.

Noch eine weitere Frage habe ich auch. Wie kann man machen, wenn man nur Buchstaben im Textfeld eingibt. Etwas mit MaskFormatter? Wenn ja, wie denn?


```
public class Uebung extends JFrame  implements ActionListener, PropertyChangeListener{

	public static void main(String[] args) {
		new Uebung(); //ein neues Fenster öffnen
	}

	private JLabel lbTelefon = new JLabel("Telfonnummer: ");
	int itelefon;
	
	NumberFormat nf = NumberFormat.getInstance();
	private JFormattedTextField ftfTelefon = new JFormattedTextField(nf);

	private JTextArea ta = new JTextArea(10,10);
	
		   
	public Uebung(){ //constructor

	ftfTelefon.addActionListener(this);
	ftfTelefon.setColumns(10);
	nf.setMaximumIntegerDigits(2);
	ftfTelefon.setValue(new Integer(itelefon));

	JPanel telefonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
	telefonPanel.add(lbTelefon);
	telefonPanel.add(ftfTelefon);
	

	JPanel mainPanel = new JPanel(new BorderLayout());
	mainPanel.add(telefonPanel, BorderLayout.NORTH);
	mainPanel.add(ta, BorderLayout.CENTER);
	
	add(mainPanel);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setTitle("JFormattedTextField");
	pack();
	setVisible(true);
	}//constructor ende

	public void actionPerformed(ActionEvent e) {
	
		ta.append(""+ itelefon);
    }

}//class
```


----------



## AlArenal (8. Dez 2006)

Hallo Java-Schnüffler! 

Kannst du, ehe du versucht die Programmiersprache Java zu erlernen, vielleicht noch etwas die Sprache Deutsch auffrischen? Ich verstehe beim Lesen deines Posts nämlich nur Bahnhof. Oder warst du vor deiner Karriere als Java-Schnüffler vielleicht exzessiver Patex-Schnüffler?

Der wo dich nicht verstehen tut...


----------



## Java-Schnüffler (8. Dez 2006)

Sorry, ich beherrsche keine gute Deutschsprache. Ich versuche es nochmals, wie ich damit meine. Ich habe programmiert, dass das Textfeld nur die Zahl zulässt. Es hat doch geklappt. Im Textbereich wird immer wieder 0 angezeigt, wenn man eine Zahl wie 2 oder 12 im Textfeld eingegeben hat. Ich würde es gerne wissen, wieso 0 im Textbereich immer wieder angezeigt wird, wenn man eine andere Zahl eingibt. 

Eben ist mir eingefallen, dass ich es gerne wissen möchte, wie man das macht, wenn das Textfeld nur das Buchstaben zulässt. Wie denn?


----------



## SlaterB (8. Dez 2006)

du fügst mit 
ta.append(""+ itelefon);
den Inhalt von itelefon zu,
itelefon ist aber immer 0, hat nichts mit dem TextField  zu tun,
benutze stattdessen
ta.append(ftfTelefon.getText());

---------

allgemein ist es abenteuerlich, ohne Kenntnisse mit JFormattedTextField zu arbeiten,
lies z.B.
http://www.dpunkt.de/java/Programmieren_mit_Java/Oberflaechenprogrammierung/57.html


----------



## Java-Schnüffler (8. Dez 2006)

Es hat wunderbar geklappt! Danke für deine Unterstützung!


----------



## Java-Schnüffler (9. Dez 2006)

Ich bin nun mal wieder! 

Am Anfang habe ich es versucht und zwar: 

private JFormattedTextField ftf = new JFormattedTextField(new MaskFormatter("???????????"));

Das hat nicht geklappt! Ich weiß nun nicht, wie es weitergeht



```
public class Uebung extends JFrame  implements ActionListener{


	public static void main(String[] args) {
		new Uebung(); 
	}

	private JLabel lbTelefon = new JLabel("Telfonnummer: ");
	

	private JFormattedTextField ftf = new JFormattedTextField(new MaskFormatter());
	
    
	NumberFormat nf = NumberFormat.getInstance();
	private JFormattedTextField ftfTelefon = new JFormattedTextField(nf);
	int itelefon;
	
	private JTextArea ta = new JTextArea(10,10);
	
		   
	public Uebung(){ //Kronstruktor

		
	ftfTelefon.addActionListener(this);
	ftfTelefon.setColumns(10);
	ftfTelefon.setValue(new Integer(0));

	ftf.setColumns(10);


	JPanel telefonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
	telefonPanel.add(lbTelefon);
	telefonPanel.add(ftfTelefon);
	telefonPanel.add(ftf);
	

	JPanel mainPanel = new JPanel(new BorderLayout());
	mainPanel.add(telefonPanel, BorderLayout.NORTH);
	mainPanel.add(ta, BorderLayout.CENTER);

	add(mainPanel);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setTitle("JFormattedTextField");
	pack();
	setVisible(true);
	}//construktor ende

	public void actionPerformed(ActionEvent e) {
		ta.append(ftf.getText());

		if (ftfTelefon.getText().length()== 5){
			ta.append(ftfTelefon.getText());
			
		}
		else{
			JOptionPane.showMessageDialog(this,"Entweder ist die Anzahl zu wenig oder zuviel!", "Fehlermeldung",JOptionPane.ERROR_MESSAGE);
		}
	}



}//class
```


----------



## SlaterB (9. Dez 2006)

new MaskFormatter("??")

funktioniert bei mir wenn du nicht am Anfang einen Wert 0 setzt!

ftfTelefon.setValue(new Integer(0)); 

lasse das weg oder setzen einen String


----------



## Java-Schnüffler (9. Dez 2006)

SlaterB hat gesagt.:
			
		

> new MaskFormatter("??")
> 
> funktioniert bei mir wenn du nicht am Anfang einen Wert 0 setzt!
> 
> ...




Der rote Unterstrich wird aufgetaucht (Fehlerbezeichnung), wenn ich new MaskFormatter("??") geschrieben habe.

So habe ich geschrieben: private JFormattedTextField ftf = new JFormattedTextField(new MaskFormatter("??"));
Vielleicht muss ich noch was hinzuschreiben, oder?!

meinst du etwa, dass ich so
ftf.setValue(new String(""));
schreiben soll?


----------



## SlaterB (9. Dez 2006)

> meinst du etwa, dass ich so
> ftf.setValue(new String(""));
> schreiben soll?

was hätte das für einen Sinn? dann kannst du den Befehl gleich ganz weglassen,
setze nur einen Value wenn auch einer hin soll,
Integer 0 ist falsch, "" unnötig aber dürfte funktionieren

> Fehlerbezeichnung

gibts dazu auch eine Fehlermeldung?
immer interessant anzugeben

es liegt in diesem Fall höchstwahrscheinlich daran,
dass der MaskFormatter-Konstruktor eine Exception werfen kann,
verwende


```
private JFormattedTextField ftf;

public Uebung() { //constructor

		try {
			ftf = new JFormattedTextField(new MaskFormatter("??"));
		} catch (ParseException e) {
			e.printStackTrace();
		}
```


----------



## Java-Schnüffler (10. Dez 2006)

Danke! Das hat wunderbar geklappt! Nun habe ich es endlich begriffen! Freu!


----------

