Das ganze funktioniert, wenn man Zeile mit:
[Java]fileEinstellungen = new File("C://test//einstellungen2spielerreaktor.txt");[/Java]
ersetzt, allerdings ist die Textdatei dann ausgelagert und das ist nicht wie ich es gerne lösen würde.
Hier den Quellcode der ganzen Klasse:
[Java]
// Importe
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Formatter;
import java.util.Scanner;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
// Klasse Einstellungen für die Einstellungen
public class Einstellungen {
// Einbinden anderer Klassen
GUI GUI = new GUI();
Menu Menu = new Menu();
// Klassen-Initialisierungen (JFrame, JPanel, File und Formatter)
JFrame fEinstellungen;
JPanel pEinstellungen;
File fileEinstellungen;
Formatter fileEinstellungenFormatter;
// Methoden-Initialisierungen (Label, Kontrollkästchen, Textfeld, Dropdownmenü und Button)
JLabel labEinstellungenUeberschrift;
JLabel labEinstellungenSpielUeberschrift;
JLabel labEinstellungenSpielAbc;
JLabel labEinstellungenSpielEinwohnerzahlen;
JLabel labEinstellungenSpielTicTacToe;
JLabel labEinstellungenBild;
JCheckBox cbEinstellungenSpielAbc;
JCheckBox cbEinstellungenSpielEinwohnerzahlen;
JCheckBox cbEinstellungenSpielTicTacToe;
JLabel labEinstellungenSpieldauer;
JLabel labEinstellungenSpieldauerAktuell;
JTextField tfEinstellungenSpieldauer;
JLabel labEinstellungenTastenUeberschrift;
JLabel labEinstellungenTastenBelegung;
JComboBox<Object> combEinstellungenTastenBelegungSpieler1;
JComboBox<Object> combEinstellungenTastenBelegungSpieler2;
JButton bEinstellungenSpeichern;
JButton bEinstellungenZuMain;
// Bilderimport
Icon iconEinstellungenHintergrund = new ImageIcon(getClass().getResource("ImageEinstellungen.png"));
//Anlegen einer Farbe
Color panelblau = new Color(110, 205, 235);
// Variablen-Deklaration und -Initialisierung statischer Variablen (boolean, int und char)
static boolean einstellungenSpielAbcSpielen = true,
einstellungenSpielEinwohnerzahlenSpielen = true,
einstellungenSpielTicTacToeSpielen = true;
static char einstellungenTastenBelegungSpieler1 = 'a',
einstellungenTastenBelegungSpieler2 = 'j';
static int einstellungenSpieldauer = 10,
einstellungenTastenBelegungSpieler1Index,
einstellungenTastenBelegungSpieler2Index;
// Methode Einstellungsmenue als Fenster für die Darstellung des Einstellungsmenüs
public void Einstellungsmenue() {
// JFrame: Klassendeklaration und Klassenkonkretisierung
fEinstellungen = new JFrame("2-Spieler-Reaktor");
fEinstellungen.setSize(800, 600);
fEinstellungen.setLocationRelativeTo(null);
fEinstellungen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fEinstellungen.setLayout(null);
fEinstellungen.setResizable(false);
fEinstellungen.setVisible(true);
fEinstellungen.setFocusable(true);
// JPanel: Klassendeklaration und Klassenkonkretisierung
pEinstellungen = new JPanel();
pEinstellungen.setBounds(250, 100, 300, 250);
pEinstellungen.setBackground(panelblau);
pEinstellungen.setLayout(null);
// JMenuBar: Aufrufen einer Methode und Einbinden der Menüleiste
Menu.MenuBarAnzeigen();
fEinstellungen.setJMenuBar(Menu.MenuBar);
// JLabel: Methodendeklaration und Methodenkonkretisierung (5 Label)
labEinstellungenUeberschrift = new JLabel("Einstellungen");
labEinstellungenUeberschrift.setBounds(280, 60, 240, 40);
labEinstellungenUeberschrift.setHorizontalAlignment(SwingConstants.CENTER);
labEinstellungenUeberschrift.setVerticalAlignment(SwingConstants.TOP);
labEinstellungenUeberschrift.setFont(new Font("Tahoma", Font.BOLD, 25));
labEinstellungenSpielUeberschrift = new JLabel("Welche Spiele sollen gespielt werden?");
labEinstellungenSpielUeberschrift.setBounds(0, 10, 290, 25);
labEinstellungenSpielUeberschrift.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpielUeberschrift.setFont(new Font("Tahoma", Font.BOLD, 15));
labEinstellungenSpielAbc = new JLabel("ABC:");
labEinstellungenSpielAbc.setBounds(0, 35, 150, 25);
labEinstellungenSpielAbc.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpielAbc.setFont(new Font("Tahoma", Font.PLAIN, 15));
labEinstellungenSpielEinwohnerzahlen = new JLabel("Einwohnerzahlen:");
labEinstellungenSpielEinwohnerzahlen.setBounds(0, 55, 150, 25);
labEinstellungenSpielEinwohnerzahlen.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpielEinwohnerzahlen.setFont(new Font("Tahoma", Font.PLAIN, 15));
labEinstellungenSpielTicTacToe = new JLabel("Tic Tac Toe:");
labEinstellungenSpielTicTacToe.setBounds(0, 75, 150, 25);
labEinstellungenSpielTicTacToe.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpielTicTacToe.setFont(new Font("Tahoma", Font.PLAIN, 15));
labEinstellungenBild = new JLabel(iconEinstellungenHintergrund);
labEinstellungenBild.setBounds(0, 0, 790, 550);
// JCheckBox: Methodendeklaration und Methodenkonkretisierung (3 CheckBoxen)
// und ifFunktionen zur Ermittlung des richtigen Auswahlstands bei Aufruf des Eigenschaftenmenüs
cbEinstellungenSpielAbc = new JCheckBox();
cbEinstellungenSpielAbc.setBounds(150, 35, 20, 20);
cbEinstellungenSpielAbc.setVerticalAlignment(SwingConstants.CENTER);
cbEinstellungenSpielAbc.setBackground(panelblau);
if (einstellungenSpielAbcSpielen == true) {
cbEinstellungenSpielAbc.setSelected(true);
} else if (einstellungenSpielAbcSpielen == false) {
cbEinstellungenSpielAbc.setSelected(false);
}
cbEinstellungenSpielEinwohnerzahlen = new JCheckBox();
cbEinstellungenSpielEinwohnerzahlen.setBounds(150, 55, 20, 20);
cbEinstellungenSpielEinwohnerzahlen.setVerticalAlignment(SwingConstants.CENTER);
cbEinstellungenSpielEinwohnerzahlen.setBackground(panelblau);
if (einstellungenSpielEinwohnerzahlenSpielen == true) {
cbEinstellungenSpielEinwohnerzahlen.setSelected(true);
} else if (einstellungenSpielEinwohnerzahlenSpielen == false) {
cbEinstellungenSpielEinwohnerzahlen.setSelected(false);
}
cbEinstellungenSpielTicTacToe = new JCheckBox();
cbEinstellungenSpielTicTacToe.setBounds(150, 75, 20, 20);
cbEinstellungenSpielTicTacToe.setVerticalAlignment(SwingConstants.CENTER);
cbEinstellungenSpielTicTacToe.setBackground(panelblau);
if (einstellungenSpielTicTacToeSpielen == true) {
cbEinstellungenSpielTicTacToe.setSelected(true);
} else if (einstellungenSpielTicTacToeSpielen == false) {
cbEinstellungenSpielTicTacToe.setSelected(false);
}
// JLabel: Methodendeklaration und Methodenkonkretisierung (2 Label)
labEinstellungenSpieldauer = new JLabel("Runden pro Spiel:");
labEinstellungenSpieldauer.setBounds(0, 135, 150, 25);
labEinstellungenSpieldauer.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpieldauer.setFont(new Font("Tahoma", Font.PLAIN, 15));
labEinstellungenSpieldauerAktuell = new JLabel("Aktuell: " + einstellungenSpieldauer);
labEinstellungenSpieldauerAktuell.setBounds(200, 135, 100, 25);
labEinstellungenSpieldauerAktuell.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenSpieldauerAktuell.setFont(new Font("Tahoma", Font.PLAIN, 15));
// JTextField: Methodendeklaration und Methodenkonkretisierung (1 Textfeld)
tfEinstellungenSpieldauer = new JTextField("" + einstellungenSpieldauer);
tfEinstellungenSpieldauer.setBounds(140, 135, 35, 23);
tfEinstellungenSpieldauer.setFont(new Font("Tahoma", Font.PLAIN, 15));
// JLabel: Methodendeklaration und Methodenkonkretisierung (2 Label)
labEinstellungenTastenUeberschrift = new JLabel("Tastenbelegung:");
labEinstellungenTastenUeberschrift.setBounds(0, 195, 250, 25);
labEinstellungenTastenUeberschrift.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenTastenUeberschrift.setFont(new Font("Tahoma", Font.BOLD, 15));
labEinstellungenTastenBelegung = new JLabel("Spieler 1: Spieler 2:");
labEinstellungenTastenBelegung.setBounds(0, 220, 250, 25);
labEinstellungenTastenBelegung.setHorizontalAlignment(SwingConstants.LEFT);
labEinstellungenTastenBelegung.setFont(new Font("Tahoma", Font.PLAIN, 15));
// ComboBox: Methodendeklaration und Methodenkonkretisierung (2 Comboboxen)
// und Deklarierung zweier CharArrays
Character[] TastenSpieler1 = { 'a', 's', 'd' };
combEinstellungenTastenBelegungSpieler1 = new JComboBox<Object>(TastenSpieler1);
combEinstellungenTastenBelegungSpieler1.setBounds(66, 220, 40, 23);
combEinstellungenTastenBelegungSpieler1.setFont(new Font("Tahoma", Font.PLAIN, 15));
combEinstellungenTastenBelegungSpieler1.setSelectedIndex(einstellungenTastenBelegungSpieler1Index);
Character[] TastenSpieler2 = { 'j', 'k', 'l' };
combEinstellungenTastenBelegungSpieler2 = new JComboBox<Object>(TastenSpieler2);
combEinstellungenTastenBelegungSpieler2.setBounds(209, 220, 40, 23);
combEinstellungenTastenBelegungSpieler2.setFont(new Font("Tahoma", Font.PLAIN, 15));
combEinstellungenTastenBelegungSpieler2.setSelectedIndex(einstellungenTastenBelegungSpieler2Index);
// JButton: Methodendeklaration und Methodenkonkretisierung (2 Button)
bEinstellungenSpeichern = new JButton("Speichern");
bEinstellungenSpeichern.setBounds(250, 400, 140, 50);
bEinstellungenSpeichern.addActionListener(new ActionHandler());
bEinstellungenZuMain = new JButton("Zum Hauptmenü");
bEinstellungenZuMain.setBounds(410, 400, 140, 50);
bEinstellungenZuMain.addActionListener(new ActionHandler());
// Einbindung der Methoden in die JPanel-Klasse
fEinstellungen.add(labEinstellungenUeberschrift);
pEinstellungen.add(labEinstellungenSpielUeberschrift);
pEinstellungen.add(labEinstellungenSpielAbc);
pEinstellungen.add(labEinstellungenSpielEinwohnerzahlen);
pEinstellungen.add(labEinstellungenSpielTicTacToe);
pEinstellungen.add(cbEinstellungenSpielAbc);
pEinstellungen.add(cbEinstellungenSpielEinwohnerzahlen);
pEinstellungen.add(cbEinstellungenSpielTicTacToe);
pEinstellungen.add(labEinstellungenSpieldauer);
pEinstellungen.add(labEinstellungenSpieldauerAktuell);
pEinstellungen.add(tfEinstellungenSpieldauer);
pEinstellungen.add(labEinstellungenTastenUeberschrift);
pEinstellungen.add(labEinstellungenTastenBelegung);
pEinstellungen.add(combEinstellungenTastenBelegungSpieler1);
pEinstellungen.add(combEinstellungenTastenBelegungSpieler2);
// Einbindung der Methoden in die JFrame-Klasse
fEinstellungen.add(pEinstellungen);
fEinstellungen.add(bEinstellungenSpeichern);
fEinstellungen.add(bEinstellungenZuMain);
fEinstellungen.add(labEinstellungenBild);
}
// Methode EinstellungenImport um Einstellungen aus externer Datei zu Importieren
public void EinstellungenImport() throws FileNotFoundException {
// Methodeninitialisierungen
fileEinstellungen = new File(getClass().getResource("Einstellungen.txt"));
Scanner einstellungenImport = new Scanner(fileEinstellungen);
// Laden der drei Boolean aus Datei und ändern der Einstellungen
if(einstellungenImport.hasNext()) {
einstellungenSpielAbcSpielen = einstellungenImport.nextBoolean();
einstellungenSpielEinwohnerzahlenSpielen = einstellungenImport.nextBoolean();
einstellungenSpielTicTacToeSpielen = einstellungenImport.nextBoolean();
einstellungenTastenBelegungSpieler1Index = einstellungenImport.nextInt();
einstellungenTastenBelegungSpieler2Index = einstellungenImport.nextInt();
einstellungenSpieldauer = einstellungenImport.nextInt();
if (einstellungenTastenBelegungSpieler1Index == 0) {
einstellungenTastenBelegungSpieler1 = 'a';
} else if (einstellungenTastenBelegungSpieler1Index == 1) {
einstellungenTastenBelegungSpieler1 = 's';
} else if (einstellungenTastenBelegungSpieler1Index == 2) {
einstellungenTastenBelegungSpieler1 = 'd';
}
if (einstellungenTastenBelegungSpieler2Index == 0) {
einstellungenTastenBelegungSpieler2 = 'j';
} else if (einstellungenTastenBelegungSpieler2Index == 1) {
einstellungenTastenBelegungSpieler2 = 'k';
} else if (einstellungenTastenBelegungSpieler2Index == 2) {
einstellungenTastenBelegungSpieler2 = 'l';
}
}
// Schließen der Einstellungsdatei
einstellungenImport.close();
}
// Methode EinstellungenExport um Einstellungen in externer Datei abzuspeichern
public void EinstellungenExport() {
fileEinstellungen = new File("C://test//einstellungen2spielerreaktor.txt");
fileEinstellungenFormatter = null;
try {
fileEinstellungenFormatter = new Formatter(fileEinstellungen);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
fileEinstellungenFormatter.format("%b", einstellungenSpielAbcSpielen);
fileEinstellungenFormatter.format(" %b", einstellungenSpielEinwohnerzahlenSpielen);
fileEinstellungenFormatter.format(" %b", einstellungenSpielTicTacToeSpielen);
fileEinstellungenFormatter.format(" %d", einstellungenTastenBelegungSpieler1Index);
fileEinstellungenFormatter.format(" %d", einstellungenTastenBelegungSpieler2Index);
fileEinstellungenFormatter.format(" %d", einstellungenSpieldauer);
fileEinstellungenFormatter.close();
}
// ActionListener
private class ActionHandler implements ActionListener {
@SuppressWarnings("static-access")
@Override
public void actionPerformed(ActionEvent e) {
// ActionListener für Button (Funktion: Speichern der Einstellungen)
if (e.getSource() == bEinstellungenSpeichern) {
// Ermittlung, ob das AbcSpiel gespielt werden soll
if (cbEinstellungenSpielAbc.isSelected() == true) {
einstellungenSpielAbcSpielen = true;
} else if (cbEinstellungenSpielAbc.isSelected() == false) {
einstellungenSpielAbcSpielen = false;
}
// Ermittlung, ob das EinwohnerzahlenSpiel gespielt werden soll
if (cbEinstellungenSpielEinwohnerzahlen.isSelected() == true) {
einstellungenSpielEinwohnerzahlenSpielen = true;
} else if (cbEinstellungenSpielEinwohnerzahlen.isSelected() == false) {
einstellungenSpielEinwohnerzahlenSpielen = false;
}
// Ermittlung, ob das TicTacToeSpiel gespielt werden soll
if (cbEinstellungenSpielTicTacToe.isSelected() == true) {
einstellungenSpielTicTacToeSpielen = true;
} else if (cbEinstellungenSpielTicTacToe.isSelected() == false) {
einstellungenSpielTicTacToeSpielen = false;
}
// Ermittlung der ggf. neuen Rundenzahl
einstellungenSpieldauer = Integer.valueOf(tfEinstellungenSpieldauer.getText());
labEinstellungenSpieldauerAktuell.setText("Aktuell: " + einstellungenSpieldauer);
// Ermittlung der bevorzugten Tastenbelegung für Spieler 1
einstellungenTastenBelegungSpieler1Index = combEinstellungenTastenBelegungSpieler1.getSelectedIndex();
if (einstellungenTastenBelegungSpieler1Index == 0) {
einstellungenTastenBelegungSpieler1 = 'a';
} else if (einstellungenTastenBelegungSpieler1Index == 1) {
einstellungenTastenBelegungSpieler1 = 's';
} else if (einstellungenTastenBelegungSpieler1Index == 2) {
einstellungenTastenBelegungSpieler1 = 'd';
}
// Ermittlung der bevorzugten Tastenbelegung für Spieler 2
einstellungenTastenBelegungSpieler2Index = combEinstellungenTastenBelegungSpieler2.getSelectedIndex();
if (einstellungenTastenBelegungSpieler2Index == 0) {
einstellungenTastenBelegungSpieler2 = 'j';
} else if (einstellungenTastenBelegungSpieler2Index == 1) {
einstellungenTastenBelegungSpieler2 = 'k';
} else if (einstellungenTastenBelegungSpieler2Index == 2) {
einstellungenTastenBelegungSpieler2 = 'l';
}
EinstellungenExport();
fEinstellungen.requestFocus();
}
// ActionListener für Button (Funktion: Zum Hauptmenü zurückkehren)
else if (e.getSource() == bEinstellungenZuMain) {
GUI.gui();
fEinstellungen.dispose();
}
}
}
}
[/code]