Hallo zusammen,
mit folgenden Programm erzeuge ich eine JComboBox, die Städtenamen aus einer XML-Datei erhält. Die Städteliste wir über die Klasse XMLCreator und deren Methode CityList() erzeugt.
Ich habe es soeit geschafft, dass in dem Dropdown-Menü alle Städte aus der XML-Datei angezeigt werden.
Mein Ziel geht noch weiter. Und zwar soll die XML-Datei während der laufzeit dieses Programmes geändert werden, zum Beispiel neue Städte hinzu gefügt oder entfernt werden. Und das ComboboxModel sollte während der Laufzeit beim Herunterklappen des Dropdown-Menüs die Werte aktuallisieren.
Mit welchem Listener kann das realsiert werden?
Viele Grüße
Sherry
mit folgenden Programm erzeuge ich eine JComboBox, die Städtenamen aus einer XML-Datei erhält. Die Städteliste wir über die Klasse XMLCreator und deren Methode CityList() erzeugt.
Ich habe es soeit geschafft, dass in dem Dropdown-Menü alle Städte aus der XML-Datei angezeigt werden.
Mein Ziel geht noch weiter. Und zwar soll die XML-Datei während der laufzeit dieses Programmes geändert werden, zum Beispiel neue Städte hinzu gefügt oder entfernt werden. Und das ComboboxModel sollte während der Laufzeit beim Herunterklappen des Dropdown-Menüs die Werte aktuallisieren.
Mit welchem Listener kann das realsiert werden?
Viele Grüße
Sherry
Java:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
import java.awt.Window.Type;
import java.util.Vector;
import javax.swing.BoxLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JComboBox;
import XMLCreator;
public class ComboBoxTest extends JFrame implements ListDataListener {
private JPanel contentPane;
private JComboBox dropDown;
private DefaultComboBoxModel comboBoxModel1;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ComboBoxTest frame = new ComboBoxTest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public ComboBoxTest() {
setType(Type.UTILITY);
setTitle("Test für JComboBox");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
dropDown = new JComboBox();
/*
* Städte in Liste einlesen
*/
Vector<String> cities = new Vector<String>();
XMLCreator cityList = new XMLCreator();
for (int i = 0; i < cityList.CityList().size(); i++) {
cities.add(cityList.CityList().get(i));
}
/*
* ComboBoxModel erzeugen
*/
comboBoxModel1 = new DefaultComboBoxModel<String>(cities);
comboBoxModel1.addListDataListener(this);
/*
* ComboBoxModel setzen
*/
dropDown.setModel(comboBoxModel1);
GroupLayout gl_contentPane = new GroupLayout(contentPane);
gl_contentPane.setHorizontalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(76)
.addComponent(dropDown, GroupLayout.PREFERRED_SIZE, 223, GroupLayout.PREFERRED_SIZE)
.addContainerGap(137, Short.MAX_VALUE))
);
gl_contentPane.setVerticalGroup(
gl_contentPane.createParallelGroup(Alignment.LEADING)
.addGroup(gl_contentPane.createSequentialGroup()
.addGap(101)
.addComponent(dropDown, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(137, Short.MAX_VALUE))
);
contentPane.setLayout(gl_contentPane);
}
@Override
public void contentsChanged(ListDataEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void intervalAdded(ListDataEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void intervalRemoved(ListDataEvent arg0) {
// TODO Auto-generated method stub
}
}