JTextField-Objekt liest Umlaute mit falschen Zeichen ein

Wambui

Aktives Mitglied
Hallo,

ich lese aus einer XML-Datei Namen mit Umlauten (ä,ö,ü) mit der Methode setText() in ein JTextField-Objekt ein. Angezeigt wird dann im JTextField-Objekt für "ü" die Zeichen "ü", für ein "ä" die Zeichen "ä" und für das "ö" die Zeichen "ö".
In der XML-Datei habe ich bereits das Encoding UTF-8 angegeben:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
Das Problem tritt nur während der Laufzeit auf. Beim Start werden die Umlaute richtig gelesen.
Was muß im Java-Code angeben, dass die Zeichen beim Einlesen wärend der Laufzeit richtig codiert werden?

Grüße
Wambui
 

Enceladus271

Bekanntes Mitglied
1. Es wäre hilfreich zu wissen wie du die Datei einliest. Vor allem bei XML gibt es da viele verschiedene Möglichkeiten (verschiedene Parser, wird mit einem Stream oder Reader gearbeitet, ...).

2. Bist du dir sicher das die Datei UTF-8 encoded ist? Wenn die Datei z.B. mit ISO oder CP1252 erzeugt wurde kannst du ja nicht einfach UTF-8 als Encoding in die Datei schreiben. Wenn du mit Eclipse arbeitetst kannst du das prüfen, indem du einen Rechtsklick auf die Datei machst und dann Properties wählst. Dort dann UTF-8 als Encoding auswählen und nachsehen ob Eclipse die Umlaute richtig darstellt.
 

Wambui

Aktives Mitglied
Ich sollte meine Frage korrigieren, da ich diese falsch gestellt habe. Es sind tatsächlich XML-Dateien, die auch Namen mit Umlauten enthalten. Die Dateien werden vom Programm selber benannt und auf dem Filesystem abgelegt, um dann später wieder auszulesen und zu bearbeiten.
Also der Anwender gibt in ein JTextField "Bonn" oder "München" ein, dann werden XML-Dateien mit den Namen "BonnCity.xml" oder "MünchenCity.xml" angelegt. Auf dem Filesystem stehen die Dateinamen korrekt mit den Umlauten geschrieben.
Wenn ich jetzt mit diesen beiden Klassen eine andere aus der Liste der Dateien auswähle, dann passiert der Fehler im JTextField der Klasse MainGui.

Java:
package com.excample.calculator;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

/**
 * Created by Wambui Mustafa
 * Date: 29.01.15
 */
public class Settings {
    private static String setting = PlatformDependence.offerValue("setting");
    private static String directory = PlatformDependence.offerValue("directory");
    String defaultFile = "/resources"+File.separator+"settings.cfg"; //TODO JAR-tauglich machen!!

    public void generateSettings(String workingHours,
                                 String startCity,
                                 String maxDistance,
                                 String minFee,
                                 String drivingTime,
                                 String consumption,
                                 String publicTransport,
                                 String averageTaxBurden,
                                 Double railBonus)
    {
        Properties settings = new Properties();
        settings.setProperty("workinghours", workingHours);
        settings.setProperty("pointOfDeparture", startCity);
        settings.setProperty("maxdistance", maxDistance);
        settings.setProperty("minFee", minFee);
        settings.setProperty("averageTaxBurden", averageTaxBurden);
        settings.setProperty("publicTransport", publicTransport);
        settings.setProperty("railCard", String.valueOf(railBonus));
        settings.setProperty("drivingTime", drivingTime);
        settings.setProperty("consumption", consumption);

        FileWriter writer;
        try {
            writer = new FileWriter(new File(System.getProperties().getProperty("user.home")+File.separator+directory+File.separator+setting));
            settings.store(writer, null);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public String readSettings(String key) {
        Properties properties = new Properties();
        FileInputStream in;
        try {
            if (new File(System.getProperties().getProperty("user.home")+File.separator+directory+File.separator+setting).exists()) {
                in = new FileInputStream(new File(System.getProperties().getProperty("user.home")+File.separator+directory+File.separator+setting));
                properties.load(in);
                in.close();
            } else {
                in = new FileInputStream(defaultFile);
                properties.load(in);
                in.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return properties.getProperty(key);
    }
}
In MainGui wird dann der Name so eingelesen:
Java:
private String originCity = new Settings().readSettings("pointOfDeparture");
bzw.
Java:
originCityTextField.setText(originCity);
An dieser Stelle stehen dann die falschen Zeichen.

Apropos, ich verwende Intellij 14.
 

Wambui

Aktives Mitglied
Java:
package com.example.calculator.gui;

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.xml.transform.TransformerException;
import javax.xml.xpath.XPathExpressionException;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

import com.example.calculator.CityListModel;
import com.example.calculator.PlatformDependence;
import com.example.calculator.Settings;
import com.example.calculator.XmlFileWriter;
import org.w3c.dom.DOMException;
import org.xml.sax.SAXException;

import static java.awt.BorderLayout.CENTER;
import static java.awt.BorderLayout.SOUTH;

/**
 * Created by Wambui Mustafa
 * Date: 29.01.15
 */
public class SettingsFrame extends JFrame {
    /** Declaration of variables **/
    private JPanel dialogPane;
    private JPanel contentPane;
    private JLabel defaultCityLabel;
    private JComboBox defaultCityComboBox;
    private JTextField defaultCityTextField;
    private JPanel buttonBar;
    private JButton okButton;
    private JButton changeButton;
    private JButton closeButton;
    private JTextField workingHoursTextField;
	private JTextField minDayFeeTextField;
	private JTextField maxDistanceTextField;
	private JLabel drivingTimeLabel;
	private JTextField drivingTimeTextField;
	private JTextField consumptionTextField;
	private ButtonGroup buttonGroup;
	private JRadioButton railBonus25RadioButton;
	private JRadioButton railBonus50RadioButton;
	private JRadioButton railBonus100RadioButton;
	private JRadioButton railBonusNoRadioButton;
	private Double railBonus;
	private JTextField publicDistanceTextField;
	private JLabel workingHoursLabel;
	private JLabel minDayFeeLabel;
	private JLabel consumptionLabel;
	private JLabel maxDistanceLabel;
	private JLabel publicTransportLabel;
	private JLabel unit1Label;
	private JLabel unit2Label;
	private JLabel unit3Label;
	private JLabel unit4Label;
	private JLabel unit5Label;
	private JLabel unit6Label;
	private JLabel unit7Label;
	private JLabel averageTaxBurdenLabel;
	private JTextField averageTaxBurdenTextField;
    private CityListModel myCityModel;
	private static String directory = PlatformDependence.offerValue("directory");
    /** End of declaration of variables **/

    /**
     * Create the form of SettingsFrame
     */
    public SettingsFrame() {
        initComponents();
    }

    /**
     * Components of the form
     */
    private void initComponents() {
        /* Initialization of the variables */
        dialogPane = new JPanel();
        dialogPane.setBackground(new Color(250, 219, 108));
        contentPane = new JPanel();
        contentPane.setBackground(new Color(250, 219, 108));
        defaultCityLabel = new JLabel();
        defaultCityLabel.setText("Standortstadt");
        defaultCityLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
        myCityModel = new CityListModel();
		myCityModel.reload();
        defaultCityComboBox = new JComboBox();
        defaultCityComboBox.setFont(new Font("Dialog", Font.PLAIN, 11));
        defaultCityComboBox.setVisible(false);
        defaultCityComboBox.setEditable(true);
        defaultCityComboBox.setToolTipText("Stadt des Reisebeginns. Neueingabe legt eine neue Stadt an.");
        defaultCityComboBox.setModel(myCityModel);
        defaultCityTextField = new JTextField();
        defaultCityTextField.setFont(new Font("Dialog", Font.PLAIN, 11));
        defaultCityTextField.setEnabled(false);
        workingHoursLabel = new JLabel();
        workingHoursLabel.setText("Arbeitsstunden pro Tag");
        workingHoursLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
        workingHoursTextField = new JTextField();
        workingHoursTextField.setFont(new Font("Dialog", Font.PLAIN, 11));
        workingHoursTextField.setToolTipText("Wieviele Stunden hat Ihr Arbeitstag?");
        workingHoursTextField.setEnabled(false);
        workingHoursTextField.setHorizontalAlignment(JTextField.RIGHT);
        minDayFeeLabel = new JLabel();
        minDayFeeLabel.setText("Min.Tageshonorar");
        minDayFeeLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
        minDayFeeTextField = new JTextField();
        minDayFeeTextField.setFont(new Font("Dialog", Font.PLAIN, 11));
        minDayFeeTextField.setToolTipText("Geben Sie hier Ihren niedrigsten Tagessatz ein.");
        minDayFeeTextField.setEnabled(false);
        minDayFeeTextField.setHorizontalAlignment(JTextField.RIGHT);
        maxDistanceLabel = new JLabel();
        maxDistanceLabel.setText("Maximalstrecke");
        maxDistanceLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
        maxDistanceTextField = new JTextField();
        maxDistanceTextField.setFont(new Font("Dialog", Font.PLAIN, 11));
        maxDistanceTextField.setToolTipText("Maximalstrecke für Zeitkarten der DB AG");
        maxDistanceTextField.setEnabled(false);
        maxDistanceTextField.setHorizontalAlignment(JTextField.RIGHT);
        drivingTimeLabel = new JLabel();
        drivingTimeLabel.setText("Fahrzeit pro Tag");
        drivingTimeLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
        drivingTimeTextField = new JTextField();
        drivingTimeTextField.setFont(new Font("Dialog", Font.PLAIN, 11));
        drivingTimeTextField.setToolTipText("Welche maximale Reisedauer pro Tag ist akzeptabel?");
        drivingTimeTextField.setEnabled(false);
        drivingTimeTextField.setHorizontalAlignment(JTextField.RIGHT);
        consumptionLabel = new JLabel();
        consumptionLabel.setText("Fahrtkosten");
        consumptionLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
        consumptionTextField = new JTextField();
        consumptionTextField.setFont(new Font("Dialog", Font.PLAIN, 11));
        consumptionTextField.setToolTipText("Berechnet Betriebskosten mit aktuellen Treibstoffpreisen und 15.000 km Laufleistung pro Jahr, Quelle www.adac.de");
        consumptionTextField.setEnabled(false);
        consumptionTextField.setHorizontalAlignment(JTextField.RIGHT);
	    buttonGroup = new ButtonGroup();
	    railBonus25RadioButton = new JRadioButton();
        railBonus25RadioButton.setText("BahnCard25");
        railBonus25RadioButton.setFont(new Font("Dialog", Font.PLAIN, 11));
        railBonus25RadioButton.setBackground(new Color(250, 219, 108));
        railBonus25RadioButton.setEnabled(false);
	    railBonus50RadioButton = new JRadioButton();
        railBonus50RadioButton.setText("BahnCard50");
        railBonus50RadioButton.setFont(new Font("Dialog", Font.PLAIN, 11));
        railBonus50RadioButton.setBackground(new Color(250, 219, 108));
        railBonus50RadioButton.setEnabled(false);
	    railBonus100RadioButton = new JRadioButton();
        railBonus100RadioButton.setText("BahnCard100");
        railBonus100RadioButton.setFont(new Font("Dialog", Font.PLAIN, 11));
        railBonus100RadioButton.setBackground(new Color(250, 219, 108));
        railBonus100RadioButton.setEnabled(false);
	    railBonusNoRadioButton = new JRadioButton();
        railBonusNoRadioButton.setText("Ohne BahnCard");
        railBonusNoRadioButton.setFont(new Font("Dialog", Font.PLAIN, 11));
        railBonusNoRadioButton.setBackground(new Color(250, 219, 108));
        railBonusNoRadioButton.setEnabled(false);
        publicTransportLabel = new JLabel();
        publicTransportLabel.setText("Umkreis ÖPNV");
        publicTransportLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
    	publicDistanceTextField = new JTextField();
        publicDistanceTextField.setFont(new Font("Dialog", Font.PLAIN, 11));
        publicDistanceTextField.setToolTipText("In welchem Umkreis gilt noch der Tarif des ÖPNV?");
        publicDistanceTextField.setEnabled(false);
        publicDistanceTextField.setHorizontalAlignment(JTextField.RIGHT);
        averageTaxBurdenLabel = new JLabel();
        averageTaxBurdenLabel.setText("Steuerbelastung");
        averageTaxBurdenLabel.setFont(new Font("Dialog", Font.PLAIN, 12));
        averageTaxBurdenTextField = new JTextField();
        averageTaxBurdenTextField.setFont(new Font("Dialog", Font.PLAIN, 11));
        averageTaxBurdenTextField.setToolTipText("Durchschnittssteuerbelastung");
        averageTaxBurdenTextField.setEnabled(false);
        averageTaxBurdenTextField.setHorizontalAlignment(JTextField.RIGHT);
    	unit1Label = new JLabel();
        unit1Label.setText("Stunden");
        unit1Label.setFont(new Font("Dialog", Font.PLAIN, 12));
    	unit2Label = new JLabel();
        unit2Label.setText("EUR");
        unit2Label.setFont(new Font("Dialog", Font.PLAIN, 12));
    	unit3Label = new JLabel();
        unit3Label.setText("km");
        unit3Label.setFont(new Font("Dialog", Font.PLAIN, 12));
    	unit4Label = new JLabel();
        unit4Label.setText("Stunden");
        unit4Label.setFont(new Font("Dialog", Font.PLAIN, 12));
    	unit5Label = new JLabel();
        unit5Label.setText("ct/km");
        unit5Label.setFont(new Font("Dialog", Font.PLAIN, 12));
    	unit6Label = new JLabel();
        unit6Label.setText("km");
        unit6Label.setFont(new Font("Dialog", Font.PLAIN, 12));
    	unit7Label = new JLabel();
        unit7Label.setText("%");
        unit7Label.setFont(new Font("Dialog", Font.PLAIN, 12));
        buttonBar = new JPanel();
        buttonBar.setBackground(new Color(250, 219, 108));
        okButton = new JButton();
        okButton.setText("Ok");
        okButton.setFont(new Font("Dialog", Font.BOLD, 11));
        changeButton = new JButton();
        changeButton.setText("Ändern");
        changeButton.setFont(new Font("Dialog", Font.BOLD, 11));
        closeButton = new JButton();
        closeButton.setText("Schliessen");
        closeButton.setFont(new Font("Dialog", Font.BOLD, 11));
        /* End of initialization of the variables */

        /**
         * Loading data from the config file
         */
        if (new File(System.getProperties().getProperty("user.home") + File.separator + directory + File.separator + ".settings.cfg").exists()) {
            Settings getValue = new Settings();
            defaultCityTextField.setText(getValue.readSettings("pointOfDeparture"));
			workingHoursTextField.setText(getValue.readSettings("workinghours").replace('.', ','));
            minDayFeeTextField.setText(getValue.readSettings("minFee").replace('.', ','));
			maxDistanceTextField.setText(getValue.readSettings("maxdistance").replace('.', ','));
			consumptionTextField.setText(getValue.readSettings("consumption").replace('.', ','));
			drivingTimeTextField.setText(getValue.readSettings("drivingTime").replace('.', ','));
			publicDistanceTextField.setText(getValue.readSettings("publicTransport").replace('.', ','));
			averageTaxBurdenTextField.setText(getValue.readSettings("averageTaxBurden").replace('.', ','));
            switch (getValue.readSettings("railCard")) {
                case "0.75":
                    railBonus25RadioButton.setSelected(true);
                    break;
                case "0.5":
                    railBonus50RadioButton.setSelected(true);
                    break;
                case "0.0":
                    railBonus100RadioButton.setSelected(true);
                    break;
                default:
                    railBonusNoRadioButton.setSelected(true);
                    break;
            }
        } else {
            workingHoursTextField.setText("8");
			minDayFeeTextField.setText("400.00");
			maxDistanceTextField.setText("420.00");
			drivingTimeTextField.setText("2.5");
			railBonusNoRadioButton.setSelected(true);
        }
        /** End of loading data from the config file **/

        /**
         * Creates the GUI-Layout
         */
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setLocationRelativeTo(getOwner());
        setResizable(false);
        setTitle("Einstellungen");
        setIconImage(new ImageIcon(getClass().getResource("/resources/images16x16/currency_euro_yellow.png")).getImage());
        getContentPane().setLayout(new BorderLayout());

        //======== dialogPane ========
        {
            dialogPane.setBorder(new EmptyBorder(12, 12, 12, 12));
            dialogPane.setLayout(new BorderLayout());

            //======== contentPane ========
            {
                contentPane.setLayout(new GridBagLayout());
                ((GridBagLayout)contentPane.getLayout()).columnWidths = new int[] {0, 55, 0, 0, 0, 0};
                ((GridBagLayout)contentPane.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
                ((GridBagLayout)contentPane.getLayout()).columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 1.0};
                ((GridBagLayout)contentPane.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0};

                contentPane.add(defaultCityLabel, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(defaultCityTextField, new GridBagConstraints(1, 0, 5, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(defaultCityComboBox, new GridBagConstraints(1, 0, 5, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(workingHoursLabel, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(workingHoursTextField, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(unit1Label, new GridBagConstraints(2, 1, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(minDayFeeLabel, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(minDayFeeTextField, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(unit2Label, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(maxDistanceLabel, new GridBagConstraints(0, 3, 2, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(maxDistanceTextField, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(unit3Label, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(drivingTimeLabel, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(drivingTimeTextField, new GridBagConstraints(1, 4, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(unit4Label, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(consumptionLabel, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(consumptionTextField, new GridBagConstraints(1, 5, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(unit5Label, new GridBagConstraints(2, 5, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(publicTransportLabel, new GridBagConstraints(0, 6, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(publicDistanceTextField, new GridBagConstraints(1, 6, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(unit6Label, new GridBagConstraints(2, 6, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(averageTaxBurdenLabel, new GridBagConstraints(0, 7, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(averageTaxBurdenTextField, new GridBagConstraints(1, 7, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                contentPane.add(unit7Label, new GridBagConstraints(2, 7, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                buttonGroup.add(railBonusNoRadioButton);
                contentPane.add(railBonusNoRadioButton, new GridBagConstraints(0, 8, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                buttonGroup.add(railBonus25RadioButton);
                contentPane.add(railBonus25RadioButton, new GridBagConstraints(1, 8, 2, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                buttonGroup.add(railBonus50RadioButton);
                contentPane.add(railBonus50RadioButton, new GridBagConstraints(0, 9, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
                buttonGroup.add(railBonus100RadioButton);
                contentPane.add(railBonus100RadioButton, new GridBagConstraints(1, 9, 2, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 5, 5), 0, 0));
            }
            dialogPane.add(contentPane, CENTER);

            //======== buttonBar ========
            {
                buttonBar.setBorder(new EmptyBorder(10, 0, 0, 0));
                buttonBar.setLayout(new GridBagLayout());
                ((GridBagLayout)buttonBar.getLayout()).columnWidths = new int[] {0, 85, 85, 80};
                ((GridBagLayout)buttonBar.getLayout()).columnWeights = new double[] {1.0, 0.0, 0.0, 0.0};
                buttonBar.add(okButton, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 0, 10), 0, 0));
                buttonBar.add(changeButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 0, 10), 0, 0));
                buttonBar.add(closeButton, new GridBagConstraints(3, 0, 1, 1, 0.0, 0.0,
                        GridBagConstraints.CENTER, GridBagConstraints.BOTH,
                        new Insets(0, 0, 0, 0), 0, 0));
            }
            dialogPane.add(buttonBar, SOUTH);
        }
        getContentPane().add(dialogPane, CENTER);
        pack();
        /** End of Creates the GUI-Layout **/

        /**
         * Button Listeners
         */
        /* okButton */
        okButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (railBonus25RadioButton.isSelected()) {
					railBonus = 0.75;
				} else if (railBonus50RadioButton.isSelected()) {
					railBonus = 0.5;
				} else if (railBonus100RadioButton.isSelected()) {
					railBonus = 0.0;
				} else if (railBonusNoRadioButton.isSelected()) {
					railBonus = 1.0;
				}
                Settings setValue = new Settings();
				setValue.generateSettings(workingHoursTextField.getText().replace(',', '.'),
						(String) defaultCityComboBox.getSelectedItem(),
						maxDistanceTextField.getText().replace(',', '.'),
						minDayFeeTextField.getText().replace(',', '.'),
						drivingTimeTextField.getText().replace(',', '.'),
						consumptionTextField.getText().replace(',', '.'),
						publicDistanceTextField.getText().replace(',', '.'),
						averageTaxBurdenTextField.getText().replace(',', '.'),
						railBonus);
                if (!new File(System.getProperties().getProperty("user.home")+ File.separator + directory + File.separator + defaultCityComboBox.getSelectedItem() + "City.xml").exists()) {
					XmlFileWriter city = new XmlFileWriter();
					try {
						city.xmlWrite((String) defaultCityComboBox.getSelectedItem());
					} catch (DOMException
							| XPathExpressionException | IOException | SAXException
							| TransformerException ex) {
						ex.printStackTrace();
					}
				}
                Container frame = okButton.getParent();
				do
					frame = frame.getParent();
				while (!(frame instanceof JFrame));
				((JFrame) frame).dispose();
            }
        });

        /* changeButton */
        changeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                defaultCityTextField.setVisible(false);
                defaultCityComboBox.setVisible(true);
                defaultCityComboBox.setEnabled(true);
				workingHoursTextField.setEnabled(true);
				averageTaxBurdenTextField.setEnabled(true);
				minDayFeeTextField.setEnabled(true);
				maxDistanceTextField.setEnabled(true);
				consumptionTextField.setEnabled(true);
				drivingTimeTextField.setEnabled(true);
				railBonus25RadioButton.setEnabled(true);
				railBonus50RadioButton.setEnabled(true);
				railBonus100RadioButton.setEnabled(true);
				railBonusNoRadioButton.setEnabled(true);
				publicDistanceTextField.setEnabled(true);
				changeButton.setEnabled(false);
            }
        });

        /* closeButton */
        closeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Container frame = closeButton.getParent();
                do {
                    frame = frame.getParent();
                } while (!(frame instanceof JFrame));
                ((JFrame) frame).dispose();
            }
        });
    }

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        /* Create and display the form */
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    new SettingsFrame().setVisible(true);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
    }
}

Der Name steht dann auch richtig geschrieben in der settings.cfg. Irgendwie geschieht die falsche Codierung später auf dem Weg des Auslesens aus der settings.cfg in das JTextField der Klasse MainGui.
 

Enceladus271

Bekanntes Mitglied
Ein FileWriter verwendet immer das in der Java VM eingestellte Default Encoding. Dieses verwendest du also beim schreiben.
Laut Javadoc erwartet Properties.load(InputStream) aber ein ISO Encoding.

Wenn du volle Kontrolle über das Encoding haben willst solltest du folgendes machen:
Beim Laden:
Java:
final FileInputStream fis = new FileInputStream( defaultFile );
InputStreamReader reader = new InputStreamReader( fis, Charset.forName( "UTF-8" ) );
properties.load( reader );

Beim Speichern:
Java:
final FileOutputStream fos = new FileOutputStream( new File( defaultFile ) );
final OutputStreamWriter writer = new OutputStreamWriter( fos, Charset.forName( "UTF-8" ) );
props.store( writer, null );
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
S Möglichkeit, mit g.draw etwas vor ein JTextfield zu „zeichnen“? Java Basics - Anfänger-Themen 7
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
S ArrayList Username und passwort mit JTextField eingaben abgleichen Java Basics - Anfänger-Themen 10
B Variablen Int Variabel in JTextField ändern Java Basics - Anfänger-Themen 2
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E JButton und JTextField Java Basics - Anfänger-Themen 1
J JTextField Bezeichnung als Variable Java Basics - Anfänger-Themen 3
M Von einem JTextField Doublewerte entgegennehmen Java Basics - Anfänger-Themen 2
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
G JTextField per Button speichern und an andere Klasse übergeben Java Basics - Anfänger-Themen 2
D Klassen JTextField wird nur zu 50% angezeigt. Java Basics - Anfänger-Themen 15
F JTextField Kursiv und Fett machen Java Basics - Anfänger-Themen 4
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
CptK Interface JTextField: Action mit Enter ausführen Java Basics - Anfänger-Themen 16
K Methoden JTExtField mit Array erzeugen Java Basics - Anfänger-Themen 13
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
J Erste Schritte Wert aus JTextField zurückgeben Java Basics - Anfänger-Themen 6
F Aus einer anderen Klasse auf ein JTextField zugreifen Java Basics - Anfänger-Themen 17
P Cursor in JTextField setzen Java Basics - Anfänger-Themen 11
F Variablen JTextField-Inhalt kann nicht mit String abgeglichen werden Java Basics - Anfänger-Themen 2
F Interface JTextField am Anfang unsichtbar o_o Java Basics - Anfänger-Themen 3
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
K OOP Mit anderer Klasse auf JTextField zugreifen Java Basics - Anfänger-Themen 5
Liondary JTextfield Java Basics - Anfänger-Themen 8
Z Fürge nur ein JTextField ein und danach wird nichts mehr angezeigt Java Basics - Anfänger-Themen 3
S JTextField zu ArrayList hinzufügen Java Basics - Anfänger-Themen 3
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
Z JTextField - getText() Methode abbrechen? Java Basics - Anfänger-Themen 8
P jTextField - Auslesen, in Variablen speichern, eingeben... Java Basics - Anfänger-Themen 7
J Methoden JTextArea auslesen und in JTextfield ausgeben Java Basics - Anfänger-Themen 13
M Double-Ausgabe in JTextField fehlerhaft Java Basics - Anfänger-Themen 2
U Inhalt von JTextfield an andere Klasse weitergeben Java Basics - Anfänger-Themen 13
I JTextfield[] innerhalb eines Itemlistener aufrufen Java Basics - Anfänger-Themen 2
S Einzelne Buchstaben aus Jtextfield in array Java Basics - Anfänger-Themen 2
S Verhalten von JTextField in einem JTabbedPane (Register) Java Basics - Anfänger-Themen 6
L JTextField/Listener Input Problem Java Basics - Anfänger-Themen 2
G JTextField, DocumentListener, Fehler bei setText() Java Basics - Anfänger-Themen 3
S Input/Output GUI Eingabe in JTextfield in Variable speichern Java Basics - Anfänger-Themen 7
C JTextField füllen Java Basics - Anfänger-Themen 5
C jtextfield und jtable Java Basics - Anfänger-Themen 34
K JTextField in ein Spiel einfügen Java Basics - Anfänger-Themen 2
K Encoding von JTextfield Java Basics - Anfänger-Themen 2
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
P Klassen JTextfield aus anderer Klasse herausfüllen Java Basics - Anfänger-Themen 12
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
M Datumsformat in JTextfield Java Basics - Anfänger-Themen 10
S JTextField nervt rum... Java Basics - Anfänger-Themen 4
B JTextField Java Basics - Anfänger-Themen 5
D Durch Button klick wert in JTextField einfügen Java Basics - Anfänger-Themen 5
J Verknüpfung von JButton to JTextField Java Basics - Anfänger-Themen 4
B JTextField Java Basics - Anfänger-Themen 5
C Problem mit JTextField Java Basics - Anfänger-Themen 8
A Klassen JTextField eigtl leer aber es werden Methoden ect. angezeigt Java Basics - Anfänger-Themen 9
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
L JTextField auslesen mit getText() wie abspeichern? Java Basics - Anfänger-Themen 2
D jtextField Ausgabe double Java Basics - Anfänger-Themen 4
D JTextField verwenden ohne Eingabe einer Variable Java Basics - Anfänger-Themen 4
J GUI - JTextField Anordnung Java Basics - Anfänger-Themen 2
S nur Buchstaben in JTextField Java Basics - Anfänger-Themen 3
S JTextfield Auswertung mit FocusListener Java Basics - Anfänger-Themen 7
M Hilfe JTextfield Ergebnis Java Basics - Anfänger-Themen 2
B GUI- JTextField - Übung Java Basics - Anfänger-Themen 5
M OOP Wie greife ich auf JTextField zu? Java Basics - Anfänger-Themen 2
P Eingabe aus JTextField/Area an eine andere Klasse übergeben. Java Basics - Anfänger-Themen 2
M Input/Output JFrame mit JButton und JTextfield Java Basics - Anfänger-Themen 114
F GUI JTextField aktualisieren Java Basics - Anfänger-Themen 3
B jTextField bei Enter eingabe absenden? Java Basics - Anfänger-Themen 2
S JTextField leeren ohne setText("")? Java Basics - Anfänger-Themen 3
A fire button on JTextField Enter Java Basics - Anfänger-Themen 2
G JTextField() Anzeige - if-Anweisungen Java Basics - Anfänger-Themen 2
R Erste Schritte codecopieren von Editor nach Eclipse / JTextField Java Basics - Anfänger-Themen 4
L Zeichen in jTextField markieren Java Basics - Anfänger-Themen 2
M Text auf JTextField auslesen per Button Java Basics - Anfänger-Themen 4
L JTextField getText() gibt immer null zurück Java Basics - Anfänger-Themen 10
L Null Pointer Exception bei Focus Event bei einem JTextField Java Basics - Anfänger-Themen 2
C Ausgewähltes Element einer JCombobox in JTextField Java Basics - Anfänger-Themen 3
H Prüfen welches JTextfield ausgewählt/selektiert ist? Java Basics - Anfänger-Themen 7
B Input/Output jTextField - KeyEvent - Zeichen soll nicht erscheinen Java Basics - Anfänger-Themen 6
D JPasswordField - JTextField Java Basics - Anfänger-Themen 5
J JTextfield mit Enter leeren Java Basics - Anfänger-Themen 3
H JtextField auslesen und in JLable einfuegen Java Basics - Anfänger-Themen 7
D JTextField anstatt Jbuttons Java Basics - Anfänger-Themen 9
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
S mit eigener Klasse JTextField ändern Java Basics - Anfänger-Themen 3
M JTextField durch Button auslösen Java Basics - Anfänger-Themen 9
J JLabel mit Hilfe von JTextfield benennen Java Basics - Anfänger-Themen 7
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
M JTextField Java Basics - Anfänger-Themen 7
O JTextField Schriftgröße ändern Java Basics - Anfänger-Themen 1
J Nur ein Komma in JTextField zulassen... Java Basics - Anfänger-Themen 9
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
S JTextField an SQL mit -> Kommazahlen Java Basics - Anfänger-Themen 4
K JTextField auslesen, wenn Enter gedrückt.. Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben