Swing Maskformatter Verhalten?!

ElJarno

Bekanntes 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.

Java:
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
 
G

Gast2

Gast
Steht doch in alles in der API... Oder hast du eine konkrete Frage??
Ich denk mal du musst dir einen eigenen machen von der nur Noten von 1-6 annimmt... Das heißt von DecimalFormat erben dann die methode valueToString ud stringToValue überschreiben...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ghostman1711 Java JFormattedTextfield MaskFormatter ohne Leerzeichen AWT, Swing, JavaFX & SWT 3
E Problem mit MaskFormatter und JFormattedTextField AWT, Swing, JavaFX & SWT 3
G Swing Probleme mit MaskFormatter und FormattedTextField AWT, Swing, JavaFX & SWT 3
G Frage zu Format von MaskFormatter AWT, Swing, JavaFX & SWT 3
Juelin Komisches Verhalten des JavaFXprogrammes AWT, Swing, JavaFX & SWT 4
Hatsi09 JavaFx Mediaplayer seltsames Verhalten AWT, Swing, JavaFX & SWT 0
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
pkm kryptisches Verhalten bei GridLayout AWT, Swing, JavaFX & SWT 4
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
D Merkwürdiges Verhalten vom JMenu AWT, Swing, JavaFX & SWT 4
T JavaFX Verhalten ImageView bei grossen BIlddateien AWT, Swing, JavaFX & SWT 0
HarleyDavidson Swing Seltsames Verhalten GridBagLayout AWT, Swing, JavaFX & SWT 11
P JFrame langsam / seltsames Verhalten AWT, Swing, JavaFX & SWT 6
R Ändern Default-Verhalten von JScrollpane in einer JScrollpane AWT, Swing, JavaFX & SWT 1
S JTabbedProblem - "komisches" Verhalten AWT, Swing, JavaFX & SWT 2
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
T Wie ist das "Lookup-Verhalten" von JList, JCombobox änderbar? AWT, Swing, JavaFX & SWT 4
D Seltsames Verhalten meiner CheckBoxen AWT, Swing, JavaFX & SWT 7
N Swing Dynamisches Verhalten bei Änderung Fenstergröße AWT, Swing, JavaFX & SWT 6
E Swing Fehlerhaftes Verhalten bei gleichzeitigen Verwendnen von PopUpMenu und JDialog?! AWT, Swing, JavaFX & SWT 5
Ollek JTextField Verhalten mit LayoutManager AWT, Swing, JavaFX & SWT 8
A JTreeTable - unerklärliches Verhalten von getValueAt AWT, Swing, JavaFX & SWT 2
F Merkwürdiges Verhalten zeichnen sperater Thread AWT, Swing, JavaFX & SWT 13
M Komisches Verhalten: JCombobox mit KeyListener AWT, Swing, JavaFX & SWT 13
hdi SWT Shell: Auslagerung von Code verändert Verhalten AWT, Swing, JavaFX & SWT 6
U Verhalten des CheckBoxCellEditors AWT, Swing, JavaFX & SWT 3
H2SO3- AWT seltsammes verhalten eines Panels AWT, Swing, JavaFX & SWT 9
pinerski Swing JList merkwürdiges Verhalten beim sortieren AWT, Swing, JavaFX & SWT 3
I Hyper-Link ähnliches Verhalten AWT, Swing, JavaFX & SWT 5
L JFrame-Verhalten bei Klick auf Schließen-Kreuz ändern AWT, Swing, JavaFX & SWT 3
R JProgressBar-Verhalten AWT, Swing, JavaFX & SWT 5
dzim [SWT] Seltsames verhalten bei TableViewer mit TextCellEditor AWT, Swing, JavaFX & SWT 5
G Seltsames Verhalten JButton AWT, Swing, JavaFX & SWT 6
J JScrollBar scroll-Verhalten auf 2 JButtons umleiten? AWT, Swing, JavaFX & SWT 2
ARadauer bestimmtes verhalten für jtable AWT, Swing, JavaFX & SWT 6
M Merkwürdiges Verhalten von ListCellRender AWT, Swing, JavaFX & SWT 2
M Seltsames Verhalten Tooltip und JDialog AWT, Swing, JavaFX & SWT 8
S Wie verhalten sich transparente Grafiken? AWT, Swing, JavaFX & SWT 5
sparrow Tasten mit Umlauten im KeyListener verhalten sich seltsam AWT, Swing, JavaFX & SWT 4
S Seltsames verhalten des Befehles getContentPane().add(.) AWT, Swing, JavaFX & SWT 7
K JList - merkwürdiges Verhalten bei Leertaste (unter Focus) AWT, Swing, JavaFX & SWT 7
M drawImage mit seltsamen verhalten AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben