Java - не записывает данные в файл по нажатию на кнопку
public class Okno extends JFrame {
private JButton WyborProgramu = new JButton("Wybor programu");
private JButton ZmianaUstawien = new JButton("Zmiana ustawien");
private JButton NagrywanieProgramow = new JButton("Nagrywanie programow");
private JButton OdtwarzanieProgramow = new JButton("Odtwarzanie programow");
private JButton YouTube = new JButton("YouTube");
private JButton Przegladarka = new JButton("Przegladarka");
private JButton DziennikPracy = new JButton("Dziennik Pracy");
public JTextField kontrastdane = new JTextField("", 10);
public JTextField dzwiekdane = new JTextField("", 10);
public JTextField nazwawideo = new JTextField("", 10);
public JTextField nazwafilmu = new JTextField("", 10);
public Okno() {
super("Symulator pracy telewizora");
this.setBounds(800, 400, 300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container container = this.getContentPane();
container.setLayout(new GridLayout(4, 2, 20, 20));
container.add(WyborProgramu);
container.add(ZmianaUstawien);
container.add(NagrywanieProgramow);
container.add(OdtwarzanieProgramow);
container.add(YouTube);
container.add(Przegladarka);
container.add(DziennikPracy);
WyborProgramu.addActionListener(new WyborProgramu ());
ZmianaUstawien.addActionListener(new ZmianaUstawien ());
NagrywanieProgramow.addActionListener(new NagrywanieProgramow ());
OdtwarzanieProgramow.addActionListener(new OdtwarzanieProgramow ());
// YouTube.addActionListener(new YouTube ());
// Przegladarka.addActionListener(new Przegladarka ());
DziennikPracy.addActionListener(new DziennikPracy ());
}
}
public class ZmianaUstawien implements ActionListener {
public void actionPerformed (ActionEvent ee) {
BufferedReader br = null;
Panel panel = new Panel();
panel.setLayout(new FlowLayout());
try {
Date date = new Date();
String filePath = "UzywaniaTelewizora.txt";
String text = new String("Funkcja - zmiana ustawien - " + date + "\n");
try {
Files.write(Paths.get(filePath), text.getBytes(), StandardOpenOption.APPEND);
}
catch (IOException e) {
System.out.println(e);
}
br = new BufferedReader(new FileReader("Ustawienia.txt"));
String line;
while((line = br.readLine()) != null) {
JLabel ustawienie = new JLabel(line);
panel.add(ustawienie);
}
JButton zmienustawienia = new JButton("Zmien ustawienia");
panel.add(zmienustawienia);
zmienustawienia.addActionListener(new ZmienUstawienia ());
JOptionPane.showMessageDialog(null, panel, "Ustawienia", JOptionPane.PLAIN_MESSAGE);
}
catch(IOException e) {
System.out.println("Error: " + e);
}
finally {
try { br.close(); }
catch(IOException e) { System.out.println("Error: " + e); }
}
}
}
public class ZmienUstawienia extends Okno implements ActionListener {
public void actionPerformed (ActionEvent ee) {
Panel panel = new Panel();
panel.setLayout(new FlowLayout());
JLabel kontrast = new JLabel("Kontrast - ");
JLabel dzwiek = new JLabel("Dzwiek - ");
JButton ZapiszUstawienia = new JButton("Zapisz ustawienia");
panel.add(kontrast);
panel.add(kontrastdane);
panel.add(dzwiek);
panel.add(dzwiekdane);
panel.add(ZapiszUstawienia);
ZapiszUstawienia.addActionListener(new ZapiszUstawienia ());
JOptionPane.showMessageDialog(null, panel, "Ustawienia", JOptionPane.PLAIN_MESSAGE);
}
}
public class ZapiszUstawienia extends Okno implements ActionListener {
public void actionPerformed (ActionEvent ee) {
String kontrast = "Kontrast - " + kontrastdane.getText() + "%\n";
String dzwiek = "Dzwiek - " + dzwiekdane.getText() + "%\n";
BufferedReader br = null;
try {
File file = new File("Ustawienia.txt");
if(!file.exists())
file.createNewFile();
PrintWriter pw = new PrintWriter(file);
pw.print(kontrast);
pw.print(dzwiek);
pw.close();
} catch (IOException e) {
System.out.print("Error: " + e);
}
JOptionPane.showMessageDialog(null, "Ustawienia zostaly zmienione", "Ustawienia", JOptionPane.PLAIN_MESSAGE);
}
}
Создаю текстовые поля ↓
public JTextField kontrastdane = new JTextField("", 10);
public JTextField dzwiekdane = new JTextField("", 10);
Здесь добавляю их на панель ↓
panel.add(kontrastdane);
panel.add(dzwiekdane);
А здесь пытаюсь считать данные а потом записать их в файл ↓
String kontrast = "Kontrast - " + kontrastdane.getText() + "%\n";
String dzwiek = "Dzwiek - " + dzwiekdane.getText() + "%\n";
Но данные в файл не записываются, не знаю в чем проблема, или в получении из текстовых полей или
в записи в файл, кто может подсказать?
Ответы (1 шт):
Автор решения: Roman C
→ Ссылка
Перед закрытием потока желательно выполнить проверку на ошибки, все ли записано.
PrintWriter pw = new PrintWriter(file);
pw.print(kontrast);
pw.print(dzwiek);
pw.checkError():
pw.close();