hi,
kann mir bitte wer helfen? es geht um ein adressbuch, und zwar möchte ich, dass die jlist im update aktualisiert wird bzw. die daten neu geladen werden.
kann mir bitte wer helfen? es geht um ein adressbuch, und zwar möchte ich, dass die jlist im update aktualisiert wird bzw. die daten neu geladen werden.
Java:
package main;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Observable;
import java.util.Observer;
import javax.swing.*;
import data.*;
import utilities.*;
public class MainBook implements Observer {
WriteData write;
JFrame main;
JPanel north, center, south;
//JList list;
JList list;
ArrayList<Adresse> adressen = null;
public MainBook(WriteData w){
write = w;
}
public JFrame create(String name){
main = new JFrame();
main.setTitle(name);
main.setSize(500, 600);
main.setLocationRelativeTo(null);
//setDefaultCloseOperation(EXIT_ON_CLOSE);
main.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
main.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
exit();
}
});
main.add(buildNorth(), BorderLayout.NORTH);
main.add(buildCenter(), BorderLayout.CENTER);
main.add(buildSouth(), BorderLayout.SOUTH);
return main;
}
private JPanel buildNorth(){
north = new JPanel(new FlowLayout(FlowLayout.CENTER));
north.setBorder(BorderFactory.createTitledBorder("Neue Kontakte hinzufügen"));
JButton kontakt = new JButton("Neuen Kontakt anlegen");
kontakt.setToolTipText("Lege einen neuen Kontakt an");
kontakt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
AdressEingabe a= new AdressEingabe(write);
a.create().setVisible(true);
}
});
/*
JButton gruppe = new JButton("Neue Gruppe anlegen");
gruppe.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
new NeueGruppe().setVisible(true);
}
});
*/
north.add(kontakt);
return north;
}
private JPanel buildCenter(){
center = new JPanel(new BorderLayout());
adressen=new ReadData().deserealize();
center.setBorder(BorderFactory.createTitledBorder("Meine Kontakte"));
list = new JList(adressen.toArray());
center.add(list);
JButton details = new JButton("Details");
details.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (list.getSelectedIndex()==-1) new MyMsg("Bitte erst Namen wählen").setVisible(true);
else new ShowAdress((Adresse) adressen.toArray()[list.getSelectedIndex()]).setVisible(true);
}
});
JButton delete = new JButton("Kontakt entfernen");
delete.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (list.getSelectedIndex()==-1) new MyMsg("Bitte erst Namen wählen").setVisible(true);
else write.removeFromList((Adresse)adressen.toArray()[list.getSelectedIndex()]);
}
});
JPanel button = new JPanel(new FlowLayout(FlowLayout.CENTER));
button.add(details);
button.add(delete);
center.add(button, BorderLayout.SOUTH);
return center;
}
private JPanel buildSouth(){
south = new JPanel(new FlowLayout());
south.setBorder(BorderFactory.createTitledBorder("Optionen"));
JButton pass = new JButton("Speichern");
south.add(pass);
JButton about = new JButton("Über Adressbuch");
south.add(about);
about.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
new About("Adressbuch").setVisible(true);
}
});
JButton close = new JButton("Schließen");
south.add(close);
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exit();
}
});
return south;
}
public void saveData(){
// save
}
private void exit() {
int result = JOptionPane.showConfirmDialog(null,
"Möchten Sie das Programm beenden?",
"Programm beenden",
JOptionPane.YES_NO_OPTION);
switch(result) {
case JOptionPane.YES_OPTION:
System.exit(0);
case JOptionPane.NO_OPTION:
//vielleicht ist hier was zu tun
}
}
@Override
public void update(Observable arg0, Object arg1) {
System.out.println("--------------------Updated !!!----------------------");
// Liste aktualisieren
ArrayList<Adresse> result = new ReadData().deserealize();
list=null;
list = new JList(result.toArray()); //klappt nicht - wird nicht neu initialisiert
//zum Testen - klappt: result beinhaltet die richtigen Daten
/*
for(Adresse aa: result){
System.out.println(aa.toString());
}
*/
}
}