# Swing Formatted Text Field



## cereal (7. Feb 2008)

Hallo Zusammen,

ich bin ganz neu hier im Forum und absoluter Java Neuling.

Ich arbeite mit NetBeans 6.0 und versuche ein einfaches Applet zu erstellen, dass ein  Formatted Filed besitzt.

In diesem Feld sollen automatisch bei Programmstart 2 Datumstrennpunkte drin stehen. 

Ich glaube in diese Richtung müsste es gehen:


```
MaskFormatter clsMaskTime = new MaskFormatter( "##:##" );
```

Kann mir da vielleicht von euch jemand weiterhelfen?

Herzlichen Dank

MfG

http://img180.imageshack.us/my.php?image=javaexamplesl3.jpg


----------



## Ariol (7. Feb 2008)

Verwende doch JSpinner, da gibt es auch gleich ein SpinnerDateModel

http://java.sun.com/docs/books/tutorial/uiswing/components/spinner.html


----------



## cereal (7. Feb 2008)

Ariol hat gesagt.:
			
		

> Verwende doch JSpinner, da gibt es auch gleich ein SpinnerDateModel
> 
> http://java.sun.com/docs/books/tutorial/uiswing/components/spinner.html




Hallo Ariol,

besten Dank für den Alternativvorschlag, möchte es aber gerne mit den Punkten lösen um darauf aufzubauen 

Danke


----------



## Ariol (7. Feb 2008)

```
MaskFormatter clsMaskTime = new MaskFormatter( "##.##.##" );
clsMaskTime.setValidCharacters("0123456789");
```
 
oder

```
MaskFormatter clsMaskTime = new MaskFormatter( "##.##.####" );
clsMaskTime.setValidCharacters("0123456789");
```


----------



## cereal (7. Feb 2008)

Ariol hat gesagt.:
			
		

> ```
> MaskFormatter clsMaskTime = new MaskFormatter( "##.##.##" );
> clsMaskTime.setValidCharacters("0123456789");
> ```
> ...




muss das in diesen bereich? 


```
private void initComponents() {

        mainPanel = new javax.swing.JPanel();
        jFormattedTextField1 = new javax.swing.JFormattedTextField();
        menuBar = new javax.swing.JMenuBar();
        javax.swing.JMenu fileMenu = new javax.swing.JMenu();
        javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
        helpMenu = new javax.swing.JMenu();
        aboutMenuItem = new javax.swing.JMenuItem();
        statusPanel = new javax.swing.JPanel();
        javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator();
        statusMessageLabel = new javax.swing.JLabel();
        statusAnimationLabel = new javax.swing.JLabel();
        progressBar = new javax.swing.JProgressBar();

        mainPanel.setName("mainPanel"); // NOI18N
```


netbeans gibt immer eine Menge vor, ich glaube zum lernen und verstehen eher ungünstig. 
jFormattedTextField1 ist das Textfeld um das sich alles dreht. Komischerweise verweigert mir Netbeans in
diesem Bereich zu editieren....

Danke
MfG


----------



## Gast (7. Feb 2008)

klar, steht auch drüber warum du das nicht darfst....

erstell eine methode wo du den kram reinschreibst und ruf die nach initcomponents() auf, sollte reichen.


----------



## cereal (8. Feb 2008)

Gast hat gesagt.:
			
		

> klar, steht auch drüber warum du das nicht darfst....
> 
> erstell eine methode wo du den kram reinschreibst und ruf die nach initcomponents() auf, sollte reichen.




Methode:


```
public void date ()
    {
      
MaskFormatter clsMaskTime = new MaskFormatter( "##.##.##" );
clsMaskTime.setValidCharacters("0123456789");  
     }
```


... und dann noch der entsprechende Eintrag oben bei initcomponents() ?

Wie müsste der aussehen? Wenn ich es einmal gesehen habe, verstehe ich den Zusammenhang, momentan allerdings noch etwas unklar in welchen Verhältnis die zueinander stehen 

Vielen Dank!

MfG


----------



## cereal (11. Feb 2008)

push


----------



## cereal (14. Feb 2008)

cereal hat gesagt.:
			
		

> push




push


----------



## Guest (14. Feb 2008)

Du könntest auch ganz einfach in dem GUI-Design-Fenster dein FormattedField anklicken und dann rechts unten auf Code und dort unter "Post-Creation-Code" kannste den Code reinpacken. Dann musst du dafür nicht extra eine Methode schreiben.

Für solche Fragen würde ich dir auch ein Netbeans-Forum empfehlen: www.netbeans-forum.de

Grüße


----------



## Guest (14. Feb 2008)

> Wie müsste der aussehen?



Einfach bei dem Konstruktor unter der Code-Zeile:  initComponents(); deine Methode aufrufen: date();

Gruß


----------



## cereal (15. Feb 2008)

Anonymous hat gesagt.:
			
		

> Du könntest auch ganz einfach in dem GUI-Design-Fenster dein FormattedField anklicken und dann rechts unten auf Code und dort unter "Post-Creation-Code" kannste den Code reinpacken. Dann musst du dafür nicht extra eine Methode schreiben.
> 
> Für solche Fragen würde ich dir auch ein Netbeans-Forum empfehlen: www.netbeans-forum.de
> 
> Grüße




danke für die info, erhalte jedoch folgende fehlermeldung:

http://img184.imageshack.us/my.php?image=unbenanntcj6.jpg


----------



## cereal (17. Feb 2008)

push


----------



## Ariol (17. Feb 2008)

Beispiel:

```
import java.awt.GridBagLayout;
import java.text.ParseException;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.text.MaskFormatter;

public class JFTF_Test
{
	public static void main(String[] args)
	{
		JFrame f = new JFrame();
		f.setLayout(new GridBagLayout());
		MaskFormatter clsFormatter = new MaskFormatter();
		try
		{
			clsFormatter.setMask("##.##.####");
			clsFormatter.setValidCharacters("0123456789");
		}
		catch (ParseException e)
		{
			e.printStackTrace();
		}		
		JFormattedTextField jft = new JFormattedTextField(clsFormatter);
		
		jft.setText("17022008");
		
		f.add(jft);

		f.pack();
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}
}
```


----------



## cereal (18. Feb 2008)

Ariol hat gesagt.:
			
		

> Beispiel:
> 
> ```
> import java.awt.GridBagLayout;
> ...




Hallo Ariol,

vielen Dank - du hast mir echt gut weitergeholfen, es läuft.

Nun versuche ich erstmal alles nachzuvollziehen und das ganze zu erweitern


----------

