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

Status
Nicht offen für weitere Antworten.
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?

Code:
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

Top Contributor
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...
 
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?
 
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


Code:
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
 
S

SlaterB

Gast
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
 
SlaterB hat gesagt.:
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


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?
 
S

SlaterB

Gast
> 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

Code:
private JFormattedTextField ftf;

public Uebung() { //constructor

		try {
			ftf = new JFormattedTextField(new MaskFormatter("??"));
		} catch (ParseException e) {
			e.printStackTrace();
		}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben