Ik ben momenteel bezig met Java (vermits dit veel gevraagd wordt) en ik redelijk goed kan programmeren (huh, huh). Onderstaande code is een GUI-applicatietje waarin een aantal dranken in een JList worden getoond. Met de knoppen rechts kan je een element toevoegen, verwijderen, naar boven of naar beneden brengen. Nu wou ik nog een knop [bewaren] bijmaken dewelke alle aanwezige dranken wegschrijft naar een bestand (van type .txt). Natuurlijk zal nadien vanuit dit bestand dienen gelezen te worden in plaats van de vaste waarden met addElement. Ik slaag er echter niet in de gegevens weg te schrijven. Kan iemand mij hierbij helpen. Alvast bedankt!
Code:
package jpf;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class Oef20 extends JFrame implements ActionListener {
private JButton verwijderen, omhoog, omlaag, toevoegen, bewaren;
private JList jLijst;
private DefaultListModel dLijst;
public static void main(String[] args) {
Oef20 venster = new Oef20();
venster.setSize(500,250);
venster.setTitle("Keuzelijst");
venster.createGUI();
venster.setVisible(true);
}
private void createGUI() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container window = this.getContentPane();
window.setLayout(new GridLayout(1,1));
dLijst = new DefaultListModel();
dLijst.addElement("water");
dLijst.addElement("bier");
dLijst.addElement("koffie");
dLijst.addElement("champagne");
dLijst.addElement("jenever");
dLijst.addElement("wijn");
dLijst.addElement("thee");
jLijst = new JList(dLijst);
jLijst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane lijstMetSchuif = new JScrollPane(jLijst);
window.add(lijstMetSchuif);
JPanel paneel = new JPanel();
paneel.setLayout(new GridLayout(5,1));
verwijderen = new JButton("verwijderen");
omhoog = new JButton("omhoog");
omlaag = new JButton("omlaag");
toevoegen = new JButton("toevoegen");
bewaren = new JButton("bewaren");
paneel.add(verwijderen);
paneel.add(omhoog);
paneel.add(omlaag);
paneel.add(toevoegen);
paneel.add(bewaren);
window.add(paneel);
verwijderen.addActionListener(this);
omhoog.addActionListener(this);
omlaag.addActionListener(this);
toevoegen.addActionListener(this);
bewaren.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == verwijderen) verwijderen();
if (e.getSource() == omhoog) omhoog();
if (e.getSource() == omlaag) omlaag();
if (e.getSource() == toevoegen) toevoegen();
if (e.getSource() == bewaren) bewaren();
}
private void verwijderen() {
if (jLijst.getSelectedIndex() >= 0) {
dLijst.removeElementAt(jLijst.getSelectedIndex());
}
}
private void omhoog() {
int pos = jLijst.getSelectedIndex();
if (pos>0) {
dLijst.add(--pos, jLijst.getSelectedValue());
dLijst.removeElementAt(pos + 2);
jLijst.setSelectedIndex(pos);
}
}
private void omlaag() {
int pos = jLijst.getSelectedIndex();
int aantal = dLijst.size();
if (pos < aantal && pos > 0) {
dLijst.add(pos + 2, jLijst.getSelectedValue());
dLijst.removeElementAt(pos);
jLijst.setSelectedIndex(pos + 1);
}
}
private void toevoegen() {
String nieuw = JOptionPane.showInputDialog(null, "Geef een nieuwe drank");
if (nieuw.length() > 1 && nieuw != null) {
boolean OK = true;
for (int i=0; i<dLijst.size(); i++) {
if (nieuw.equals(dLijst.get(i))) {
OK = false;
}
}
if (OK) {
dLijst.add(dLijst.size(), nieuw);
}
}
}
private void bewaren() {
try {
File f = new File("H:\\java pf\\jpf\\keuzelijst.txt");
FileOutputStream fos = new FileOutputStream(f);
}
catch (Exception e) {e.getMessage();}
for (int i=0; i<dLijst.size(); i++) {
fos.write(dLijst.get(i));
}
}