Maskformatter Verhalten?!

ElJarno

Mitglied
Hi Leute,
habe Problem mit dem Masformatter.
Und zwar möchte ich die Eingabe von lediglich einer Zahl zwischen 1-6 ermöglichen(Schulnoten). Habe dazu 7 JFormattedTextFields. Es müssen dabei nicht alle ausegefüllt werden. Die eingabe erfolgt über einen Dialog den ich jedesmal neu initialisiere. Jetzt funktioniert dies schon ganz in Ordnung jedoch nur beim ersten Mal. Setz ich Werte in die Textfelder bevor ich den Dialog öffne lassen sich nur die gesetzten erneut editieren. Die nicht gesetzten wirken als wenn sie nicht editierbar wären. Zudem kann ich die gesetzten Werte nicht mehr löschen hab schon einbisschen mit den setValues experemtiert aber so richtig funktioniert die ganze Sache nicht.

Code:
package com.ed.Programme.Geschaeftspartner;

import info.clearthought.layout.TableLayout;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.text.MaskFormatter;
import javax.swing.text.NumberFormatter;

import com.ed.Programme.DB.GeschaeftspartnerBewertung;
import com.ed.Tools.EDColors;

public class DialogLieferantBewertung extends JDialog {
	private static final long serialVersionUID = 1L;

	private JPanel contentPane;
	private JLabel labelEDNummer;
	private JLabel labelBewertung;
	private JLabel labelDatum;
	private JLabel labelProduktQualitaet;
	private JLabel labelDienstleistungQualitaet;
	private JLabel labelTechnischeErfahrung;
	private JLabel labelErfahrungMitPartner;
	private JLabel labelPreis;
	private JLabel labelLieferzeit;
	private JLabel labelWirtschafteLage;
	private JLabel labelMittelWert;
	private JTextField txtFieldEDNummer;
	private JTextField txtFieldBewertung;
	private JTextField txtFieldDatum;
	private JFormattedTextField txtFieldProduktQualitaet;
	private JFormattedTextField txtFieldDienstleistungQualitaet;
	private JFormattedTextField txtFieldTechnischeErfahrung;
	private JFormattedTextField txtFieldErfahrungMitPartner;
	private JFormattedTextField txtFieldPreis;
	private JFormattedTextField txtFieldLieferzeit;
	private JFormattedTextField txtFieldWirtschafteLage;
	private JTextField txtFieldMittelWert;
	private JButton buttonUebernehmen;
	private JButton buttonAbbrechen;

	private Dimension screenSize;
	private boolean aendern;

	private String geschaeftsPartnerBewertungID;

	public DialogLieferantBewertung(JFrame owner, String title, String edNummer)
			throws ParseException {
		super(owner, title, true);
		this.screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		this.setMinimumSize(new Dimension(0, 0));
		this.setForeground(Color.WHITE);
		this.setBackground(Color.WHITE);
		this.setSize(new Dimension(250, 380));
		this.setLocation(
				(this.screenSize.width - this.getPreferredSize().width) / 2,
				(this.screenSize.height - this.getPreferredSize().height) / 2);
		this.initialize();
		if (edNummer != null)
			this.txtFieldEDNummer.setText(edNummer);
		this.txtFieldDatum.setText(new SimpleDateFormat("dd.MM.yyyy")
				.format(new Date()));
		this.getRootPane().setDefaultButton(buttonUebernehmen);
		this.setContentPane(contentPane);
		this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
			SwingUtilities.updateComponentTreeUI(this);
		} catch (Exception e) {
			System.err.println("Could not load LookAndFeel");
		}
	}

	private void initialize() throws ParseException {
		MaskFormatter maskFormatter = new MaskFormatter("#");
		maskFormatter.setValidCharacters("123456");
		this.labelBewertung = new JLabel("Bewertung");
		this.labelBewertung.setFont(new Font("Dialog", Font.BOLD, 12));
		this.labelDatum = new JLabel("Datum");
		this.labelDatum.setFont(new Font("Dialog", Font.BOLD, 12));
		this.labelDienstleistungQualitaet = new JLabel(
				"Qualität der Dienstleistung");
		this.labelEDNummer = new JLabel("ED-Nummer");
		this.labelEDNummer.setFont(new Font("Dialog", Font.BOLD, 12));
		this.labelErfahrungMitPartner = new JLabel(
				"Erfahurng mit dem Lieferanten");
		this.labelLieferzeit = new JLabel("Lieferzeit");
		this.labelMittelWert = new JLabel("Mittelwert");
		this.labelMittelWert.setFont(new Font("Dialog", Font.BOLD, 12));
		this.labelPreis = new JLabel("Preis");
		this.labelProduktQualitaet = new JLabel("Qualität der Produkte");
		this.labelTechnischeErfahrung = new JLabel(
				"Technische Erfahrung des Lieferanten");
		this.labelWirtschafteLage = new JLabel(
				"Wirtschaftliche Lage des Lieferanten");
		this.txtFieldBewertung = new JTextField();
		this.txtFieldBewertung.setEditable(false);
		this.txtFieldBewertung.setDisabledTextColor(Color.BLACK);
		this.txtFieldDatum = new JTextField();
		this.txtFieldDatum.setEditable(false);
		this.txtFieldDatum.setDisabledTextColor(Color.BLACK);
		this.txtFieldDienstleistungQualitaet = new JFormattedTextField(
				maskFormatter);
		this.txtFieldEDNummer = new JTextField();
		this.txtFieldEDNummer.setEditable(false);
		this.txtFieldEDNummer.setDisabledTextColor(Color.BLACK);
		this.txtFieldErfahrungMitPartner = new JFormattedTextField(
				maskFormatter);
		this.txtFieldLieferzeit = new JFormattedTextField(maskFormatter);
		this.txtFieldMittelWert = new JTextField();
		this.txtFieldMittelWert.setEditable(false);
		this.txtFieldMittelWert.setDisabledTextColor(Color.BLACK);
		this.txtFieldPreis = new JFormattedTextField(maskFormatter);
		this.txtFieldProduktQualitaet = new JFormattedTextField(maskFormatter);
		this.txtFieldTechnischeErfahrung = new JFormattedTextField(
				maskFormatter);
		this.txtFieldWirtschafteLage = new JFormattedTextField(maskFormatter);

		this.buttonUebernehmen = new JButton("Übernehmen");
		this.buttonUebernehmen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				aendern = true;
				setVisible(false);
			}
		});
		this.buttonAbbrechen = new JButton("Abbrechen");
		this.buttonAbbrechen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				aendern = false;
				setVisible(false);
			}
		});

		double[][] sizes = {
				{ 10, TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5, 30,
						TableLayout.FILL },
				{ 15, TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 15,
						TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5,
						TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5,
						TableLayout.PREFERRED, 5, TableLayout.PREFERRED, 5,
						TableLayout.PREFERRED, 10, TableLayout.PREFERRED, 5,
						TableLayout.PREFERRED, 15, TableLayout.PREFERRED } };
		this.contentPane = new JPanel(new TableLayout(sizes));
		this.contentPane.setBackground(EDColors.edHellcyan);
		this.contentPane.add(this.labelEDNummer, "1,1");
		this.contentPane.add(this.txtFieldEDNummer, "3,1,5,1");
		this.contentPane.add(this.labelDatum, "1,3");
		this.contentPane.add(this.txtFieldDatum, "3,3,5,3");
		// this.contentPane.add(new PanelLinie(EDColors.edHellcyan,
		// EDColors.edHellgrau, PanelLinie.SIMPLE_LINE), "0,4,6,4");
		this.contentPane.add(this.labelProduktQualitaet, "1,5,3,5");
		this.contentPane.add(this.txtFieldProduktQualitaet, "5,5");
		this.contentPane.add(this.labelDienstleistungQualitaet, "1,7,3,7");
		this.contentPane.add(this.txtFieldDienstleistungQualitaet, "5,7");
		this.contentPane.add(this.labelTechnischeErfahrung, "1,9,3,9");
		this.contentPane.add(this.txtFieldTechnischeErfahrung, "5,9");
		this.contentPane.add(this.labelErfahrungMitPartner, "1,11,3,11");
		this.contentPane.add(this.txtFieldErfahrungMitPartner, "5,11");
		this.contentPane.add(this.labelPreis, "1,13,3,13");
		this.contentPane.add(this.txtFieldPreis, "5,13");
		this.contentPane.add(this.labelLieferzeit, "1,15,3,15");
		this.contentPane.add(this.txtFieldLieferzeit, "5,15");
		this.contentPane.add(this.labelWirtschafteLage, "1,17,3,17");
		this.contentPane.add(this.txtFieldWirtschafteLage, "5,17");
		// this.contentPane.add(new PanelLinie(EDColors.edHellcyan,
		// EDColors.edHellgrau, PanelLinie.BORDER_LINE), "0,18,6,18");
		this.contentPane.add(this.labelMittelWert, "1,19,3,19");
		this.contentPane.add(this.txtFieldMittelWert, "5,19");
		this.contentPane.add(this.labelBewertung, "1,21,3,21");
		this.contentPane.add(this.txtFieldBewertung, "5,21");
		this.contentPane.add(this.buttonUebernehmen, "1,23,5,23,l,c");
		this.contentPane.add(this.buttonAbbrechen, "1,23,5,23,r,c");
	}

	public void setGeschaeftsBewertung(String edNummer,
			GeschaeftspartnerBewertung geschaeftspartnerBewertung)
			throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
		this.txtFieldEDNummer.setText(edNummer);
		this.geschaeftsPartnerBewertungID = geschaeftspartnerBewertung
				.getGeschaeftsPartnerBewertungID();
		this.txtFieldBewertung.setText(geschaeftspartnerBewertung
				.getBewertungszeichen());
		if (geschaeftspartnerBewertung.getErstellDatum() != null)
			this.txtFieldDatum.setText(sdf.format(geschaeftspartnerBewertung
					.getErstellDatum()));

		this.txtFieldDienstleistungQualitaet
				.setValue(geschaeftspartnerBewertung
						.getDienstleistungQualitaet());
		this.txtFieldErfahrungMitPartner.setValue(geschaeftspartnerBewertung
				.getErfahrungMitPartner());
		this.txtFieldLieferzeit.setValue(geschaeftspartnerBewertung
				.getLieferzeit());
		this.txtFieldPreis.setValue(geschaeftspartnerBewertung.getPreis());
		this.txtFieldProduktQualitaet.setValue(geschaeftspartnerBewertung
				.getProduktQualitaet());
		this.txtFieldTechnischeErfahrung.setValue(geschaeftspartnerBewertung
				.getTechnischeErfahrung());
		this.txtFieldWirtschafteLage.setValue(geschaeftspartnerBewertung
				.getWirtschafteLage());

		float mittelWert = Math.round(geschaeftspartnerBewertung
				.getDurchSchnitt() * 100f) / 100f;
		this.txtFieldMittelWert.setText(String.valueOf(mittelWert));
	}

	public GeschaeftspartnerBewertung getGeschaeftsBewertung() {
		if (aendern) {
			GeschaeftspartnerBewertung geschaeftsBewertung = new GeschaeftspartnerBewertung();
			geschaeftsBewertung
					.setGeschaeftsPartnerBewertungID(this.geschaeftsPartnerBewertungID);

			if (this.txtFieldDienstleistungQualitaet.getValue() != null)
				geschaeftsBewertung.setDienstleistungQualitaet(Integer
						.valueOf(this.txtFieldDienstleistungQualitaet
								.getValue().toString()));
			if (this.txtFieldErfahrungMitPartner.getValue() != null)
				geschaeftsBewertung.setErfahrungMitPartner(Integer
						.valueOf(this.txtFieldErfahrungMitPartner.getValue()
								.toString()));
			if (this.txtFieldLieferzeit.getValue() != null)
				geschaeftsBewertung
						.setLieferzeit(Integer.valueOf(this.txtFieldLieferzeit
								.getValue().toString()));
			if (this.txtFieldPreis.getValue() != null)
				geschaeftsBewertung.setPreis(Integer.valueOf(this.txtFieldPreis
						.getValue().toString()));
			if (this.txtFieldProduktQualitaet.getValue() != null)
				geschaeftsBewertung.setProduktQualitaet(Integer
						.valueOf(this.txtFieldProduktQualitaet.getValue()
								.toString()));
			if (this.txtFieldTechnischeErfahrung.getValue() != null)
				geschaeftsBewertung.setTechnischeErfahrung(Integer
						.valueOf(this.txtFieldTechnischeErfahrung.getValue()
								.toString()));
			if (this.txtFieldWirtschafteLage.getValue() != null)
				geschaeftsBewertung.setWirtschafteLage(Integer
						.valueOf(this.txtFieldWirtschafteLage.getValue()
								.toString()));
			return geschaeftsBewertung;
		} else {
			return null;
		}
	}
}

Gruß Jan