JFormattedTextField oder NumberFormat!

Status
Nicht offen für weitere Antworten.
Hallo!

ich habe mich einiges von hier informiert. Nachher bin ich ganz schön durcheinander.
Im Textfeld sind NUR die Zahlen zugelassen, ansonsten wird die Fehlermeldung (JOptionPane) angezeigt, wenn man das Buchstaben im Textfeld eingibt.
Hier ist meine erste Probe! Aber ich weiß nicht, wie es weitergeht, was ich mir wünsche.

Es wäre schön, wenn ihr meine Arbeit was hinzufügt, damit verstehe ich besser.


Code:
import java.awt.BorderLayout;
import java.awt.FlowLayout;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Uebung extends JFrame {

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

	private JLabel lbTelefon = new JLabel("Telfonnummer: ");
	private JFormattedTextField ftfTelefon = new JFormattedTextField();
	
	public Uebung(){ 


	ftfTelefon.setColumns(10);
	
	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);
	
	
	add(mainPanel);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setTitle("JFormattedTextField");
	pack();
	setVisible(true);
	}
//construktor ende
 
S

SlaterB

Gast
nene, du sollst bitte das bisher fehlende
"Im Textfeld sind NUR die Zahlen zugelassen, ansonsten wird die Fehlermeldung (JOptionPane) angezeigt, wenn man das Buchstaben im Textfeld eingibt. "
einbauen
 

WieselAc

Top Contributor
Ahhhhhhh versteh ich soll deine Aufgabe lösen!!!! Darf ich dir auch die Schuhe putzen und dir die Jacke anziehen???



:noe: :noe: :noe: :noe: :noe: :noe: :noe: :noe:



Selber machen und fragen stellen, so läuft das hier!!!!
 

Azrahel

Bekanntes Mitglied
Ohje...

Da nimmste dir ne neue Klasse, nennst die Irgendwie und leitest die von PlainDocument ab.

das sieht dann so aus
Code:
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
 * 
 */
public class CharField extends PlainDocument {
	
	private JTextField field;
	  
	/**
	 * KONSTRUKTOR
	 * 
	 */
	public CharField(){
		super();
		this.field = new JTextField();
	}
	 
	/**
	 * Fügt ein oder mehrere Zeichen in das 
	 * Zeitfeld ein. Dabei wird der : als Trenner nicht
	 * überschrieben
	 */
	public void insertString(int offset, String  str, AttributeSet attr)throws BadLocationException{
		if (str != null){
			
        	for (int i = 0; i < str.length(); i++){
				int einfuegestelle = offset + i;

				char c = str.charAt(i);
				if(isNumeric(c)){
					String ctos = Character.toString(c);
					super.insertString(einfuegestelle, ctos, attr);
				}else{
					offset--;
					//Hier deine Message einbauen
                                                                                break;
				}
			}
		}
	}
	
	public boolean isNumeric (char c)
	{
		if ( !(c > 47 && c < 58))
		{
			return false;
		}			
		return true;	
	}
	
	/**
	 * gibt das Feld als grafische Komponente zurück.
	 */
	public JTextField getField(){
		return field;
	}
}

Ohne Gewähr
 

Azrahel

Bekanntes Mitglied
WieselAc hat gesagt.:
Ahhhhhhh versteh ich soll deine Aufgabe lösen!!!! Darf ich dir auch die Schuhe putzen und dir die Jacke anziehen???



:noe: :noe: :noe: :noe: :noe: :noe: :noe: :noe:



Selber machen und fragen stellen, so läuft das hier!!!!

Sorry wenn ich dir jetzt in die Suppe spucke, aber ich hab da auch schon dran rumgefighted wie Sau, und hab heut meinen guten Tag. Wenn ers schafft das einzubauen und zum laufen zu bringen hat er auch schon was geleistet :)
 
Oder gib mir ein Beispiel dafür! Damit kann ich mich mit dieser Aufgabe allein zurechtkommen.

Code:
private JFormattedTextField ftfTelefon = new JFormattedTextField();

ftfTelefon.setColumns(10);
Wie geht es weiter? Soll die Methode NumberFormat angewendet werden?
 

WieselAc

Top Contributor
@Azrahel: Kein Problem !!!


Mal gucken ob es was hilft. ich werds mir auf jeden FAll mal durchlesen. Mit PlainDocument hab ich noch nichte gemacht.
 

Azrahel

Bekanntes Mitglied
Ich habs halt mal als Zeitfeld gebaut mit Doppelpunkt. da hab ich das grad rausgeschnitten. Deswegen kanns sein das es nicht ganz astrein ist, aber im happy when i could help you my friend :D
 

WieselAc

Top Contributor
boahh bilingual isser auch noch !!!! :)


Hab direkt mal in der API geguckt was man mit dem PlainDocument so alles anstellen kann. Ist echt interessant, wenn ich irgendwann nochmal von SWt loskomme, werd ich das dank dir bestimmt mal einsetzten und die lobend bei der Kommentierung einer private Variablen erwähnen :p
 
Azrahel hat gesagt.:
Ich habs halt mal als Zeitfeld gebaut mit Doppelpunkt. da hab ich das grad rausgeschnitten. Deswegen kanns sein das es nicht ganz astrein ist, aber im happy when i could help you my friend :D

Ich habe noch nicht mit PlainDokument gemacht. Mmh.... ich komme damit immer noch nicht zurecht. gibt es keine andere Lösung?

ich möchte erstmal einen kleinen Schritt machen. Also, nur Zahlen dürfen im Textfeld eingegeben werden.
Wie wäre es mit der Methode von JFormattedTextField? Wenn ja, dann gib mir bitte ein einfacheres Beispiel.
 
Mit der Methode JFormattedTextField habe ich immer wieder probiert. Gleich werdet ihr meine Probe - Code sehen. Das mit der Eingabe im Textfeld hat doch gut geklappt. Aber die Zahl von 0 wird immer wieder im Textbereich angezeigt, wenn man irgendeine Zahl wie 12 oder 5 eingibt. Was habe ich falsch gemacht? Es wäre schön, wenn es eine Lösung gäbe!




Code:
public class Uebung extends JFrame  implements ActionListener{

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

	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(){ //Kronstruktor

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


	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);
	}//ende construktor


	public void actionPerformed(ActionEvent e) {
	
		ta.append(""+ itelefon);
	}
}//class
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ReinerCoder Problem mit JFormattedTextField Java Basics - Anfänger-Themen 2
M Nur Zahlen oder ein leeres JFormattedTextField zulassen Java Basics - Anfänger-Themen 7
C JFormattedTextField soll Pflichtfeld sein Java Basics - Anfänger-Themen 19
P JFormattedTextField auslesen Java Basics - Anfänger-Themen 4
T JFormattedTextField ints auslesen Java Basics - Anfänger-Themen 11
A JFormattedTextField Zahleneingabe auch mit beginnender 0 Java Basics - Anfänger-Themen 4
E JFormattedTextField Zahl extrahieren - warum Number und nicht Double? Java Basics - Anfänger-Themen 4
A JFormattedTextField + DateFormatter Java Basics - Anfänger-Themen 3
B Kommazahl mit 2 Nachkomma-Stellen im jFormattedTextField Java Basics - Anfänger-Themen 6
M JFormattedTextField nachkommastellen beim verlassen prüfen Java Basics - Anfänger-Themen 11
P JFormattedTextField auf Ausgangszustand zurücksetzen? Java Basics - Anfänger-Themen 4
F Range für new JFormattedTextField möglich? Java Basics - Anfänger-Themen 2
G Textmarke in JFormattedTextField? Java Basics - Anfänger-Themen 2
R JFormattedTextField Zahlenbereich zulassen Java Basics - Anfänger-Themen 4
P JFormattedTextField auf x zeichen beschränken Java Basics - Anfänger-Themen 6
O NumberFormat Java Basics - Anfänger-Themen 1
V Tausender Trennzeichen DecimalFormat & NumberFormat Java Basics - Anfänger-Themen 8
F Double neu formatieren mit NumberFormat Java Basics - Anfänger-Themen 2
S NumberFormat Tausender Zeichen entfernen? Java Basics - Anfänger-Themen 4
D OOP Frage zu NumberFormat Java Basics - Anfänger-Themen 7
A .statt,anzeigen beim NumberFormat + Wie JTable formatieren? Java Basics - Anfänger-Themen 4
L NumberFormat Java Basics - Anfänger-Themen 5
G NumberFormat ersetzt Dezimalpunkt Java Basics - Anfänger-Themen 3
T Nachkommastellen beim NumberFormat? Java Basics - Anfänger-Themen 2
M NumberFormat und das Euro-Zeichen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben