vendredi 24 avril 2015
JComboBox auffristen nach Listenänderung
Posted on 06:58 by verona
Hallo,
ich habe ein Programm, dass in einer JComboBox eine Liste sortierter Städte anzeigt. Die Städte werden aus einer XML-Datei ausgelesen. Ein Unterprogramm kann Städte hinzufügen oder löschen.
Mein Problem ist, dass ich nicht hinbekomme, dass die JComboBox neugeladen wird, wenn das Unterprogramm geschlossen wird und das Hauptfenster wieder den Focus hat / aktiviert ist.
Als Alternative habe ich im Reset-Listener
einfügt. Der Focus oder die Aktivierung des Hauptfenster erzeugt überhaupt keine Reaktion. Und der Resetbutton wirft diese Exception:
Und ich muss ihn zweimal drücken, bis dann die JComboBox die aktuelle Städteliste anzeigt.
Ich hätte gerne das Ergebnis mit der Fensteraktivierung und vor allem ohne Fehler realisiert.
Hier die Klasse für das ComboBoxModel, wobei XMLCreator eine Klasse zum Bearbeiten, Lesen der XML-Dateien ist.
Grüße
Wambui
ich habe ein Programm, dass in einer JComboBox eine Liste sortierter Städte anzeigt. Die Städte werden aus einer XML-Datei ausgelesen. Ein Unterprogramm kann Städte hinzufügen oder löschen.
Mein Problem ist, dass ich nicht hinbekomme, dass die JComboBox neugeladen wird, wenn das Unterprogramm geschlossen wird und das Hauptfenster wieder den Focus hat / aktiviert ist.
Java Code:
-
@Override
-
myComboBoxModel.reload();
-
targetCityComboBox.setModel(myComboBoxModel);
-
}
Als Alternative habe ich im Reset-Listener
Java Code:
-
myComboBoxModel.reload();
-
targetCityComboBox.setModel(myComboBoxModel);
einfügt. Der Focus oder die Aktivierung des Hauptfenster erzeugt überhaupt keine Reaktion. Und der Resetbutton wirft diese Exception:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at com.example.calculator.gui.MainGui$1.actionPerformed(MainGui.java:521)
Ich hätte gerne das Ergebnis mit der Fensteraktivierung und vor allem ohne Fehler realisiert.
Hier die Klasse für das ComboBoxModel, wobei XMLCreator eine Klasse zum Bearbeiten, Lesen der XML-Dateien ist.
Java Code:
-
package com.example.calculator;
-
-
import java.util.Collections;
-
import java.util.Vector;
-
-
import javax.swing.DefaultComboBoxModel;
-
-
-
-
private static final long serialVersionUID = 1L;
-
private XMLCreator cityList = new XMLCreator();
-
-
-
public void reload() {
-
removeAllElements();
-
-
Vector<String> sortedCityList = new Vector<String>();
-
for (int i = 0; i < cityList.CityList().size(); i++) {
-
sortedCityList.add(cityList.CityList().get(i));
-
}
-
-
for (int i = 0; i < sortedCityList.size(); i++) {
-
addElement("" + sortedCityList.get(i));
-
}
-
}
-
-
int cityId = 0;
-
for (int i = 0; i < cityList.CityList().size(); i++) {
-
if (cityList.CityList().get(i).equals(cityName)) {
-
cityId = cityList.CityList().indexOf(cityName);
-
}
-
}
-
return cityId;
-
}
-
-
}
Java Code:
-
-
package com.example.calculator.gui;
-
-
import com.linuxmaker.calculator.*;
-
import com.linuxmaker.calculator.ComboBoxModel;
-
import com.toedter.calendar.JDateChooser;
-
import org.w3c.dom.DOMException;
-
import org.xml.sax.SAXException;
-
-
import javax.swing.*;
-
import javax.swing.border.EmptyBorder;
-
import javax.swing.border.TitledBorder;
-
import javax.xml.transform.TransformerException;
-
import javax.xml.xpath.XPathExpressionException;
-
import java.awt.*;
-
import java.awt.Container;
-
import java.awt.event.*;
-
import java.beans.PropertyChangeEvent;
-
import java.beans.PropertyChangeListener;
-
import java.io.IOException;
-
import java.text.DecimalFormat;
-
-
import java.io.File;
-
import java.text.SimpleDateFormat;
-
-
-
// Variables declaration
-
-
-
private int projektdays;
-
// End of variables declaration
-
-
/**
-
* Creates new form MainGui
-
*/
-
public MainGui() {
-
initComponents();
-
}
-
-
/**
-
* Components of the form
-
*/
-
private void initComponents() {
-
-
targetCityLabel.setText("Projektstadt");
-
targetCityComboBox = new JComboBox<>();
-
targetCityComboBox.setEditable(false);
-
// Sets ComboBoxModel
-
myComboBoxModel.reload();
-
targetCityComboBox.setModel(myComboBoxModel);
-
-
-
/**
-
* Creates the GUI-Layout
-
*/
-
setResizable(false);
-
setIconImage(new ImageIcon(getClass().getResource("/resources/images16x16/currency_euro_yellow.png")).getImage());
-
setTitle("Freelancer - Honorarrechner");
-
setLocationRelativeTo(null);
-
getContentPane().setLayout(layout);
-
-
//======== dialogPane ========
-
{
-
-
//======== contentPanel ========
-
{
-
((GridBagLayout)contentPanel.getLayout()).rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
((GridBagLayout)contentPanel.getLayout()).columnWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 1.0};
-
((GridBagLayout)contentPanel.getLayout()).rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0};
-
-
{
-
settingsPanel.setBorder(new TitledBorder(null, "Weitere Einstellungen", TitledBorder.LEADING, TitledBorder.DEFAULT_POSITION,
-
-
buttonGroup.add(netFeeRadioButton);
-
buttonGroup.add(allinFeeRadioButton);
-
}
-
{
-
-
}
-
}
-
}
-
-
//======== buttonBar ========
-
{
-
-
}
-
-
// Create the menuBar
-
{
-
fileMenu.add(exitMenuItem);
-
menuBar.add(fileMenu);
-
editMenu.add(addMenuItem);
-
editMenu.add(changeMenuItem);
-
editMenu.add(settingsMenuItem);
-
menuBar.add(editMenu);
-
infoMenu.add(helpMenuItem);
-
infoMenu.add(aboutMenuItem);
-
menuBar.add(infoMenu);
-
}
-
setJMenuBar(menuBar);
-
pack();
-
/** End of Creates the GUI-Layout **/
-
-
/**
-
* Button Listeners and Action Listeners
-
*/
-
@Override
-
dayValueLabel.setVisible(false);
-
hourValueLabel.setVisible(false);
-
turnoverValueLabel.setVisible(false);
-
cur2Label.setVisible(false);
-
cur3Label.setVisible(false);
-
cur4Label.setVisible(false);
-
cur5Label.setVisible(false);
-
cur6Label.setVisible(false);
-
XMLCreator xmlelement = new XMLCreator();
-
overnightCheckBox.setEnabled(true);
-
} else {
-
overnightCheckBox.setEnabled(false);
-
}
-
}
-
});
-
-
-
//---- resetButton ----
-
@Override
-
originCityTextField.setText(new Settings().readSettings("pointOfDeparture"));
-
feeTextField.setText("0.00");
-
scontoComboBox.setSelectedIndex(2);
-
dayValueLabel.setVisible(false);
-
hourValueLabel.setVisible(false);
-
hourHonorarLabel.setVisible(true);//TODO Projektstadt reseten, wenn sich Ausgangsstadt ändert
-
dayHonorarLabel.setVisible(true);
-
cur2Label.setVisible(false);
-
cur3Label.setVisible(false);
-
turnoverLabel.setVisible(true);
-
turnoverValueLabel.setVisible(false);
-
cur4Label.setVisible(false);
-
cur5Label.setVisible(false);
-
cur6Label.setVisible(false);
-
projectDaysTextField.setText("");
-
projectEndChooser.setEnabled(false);
-
saturdayWork.setEnabled(false);
-
myComboBoxModel.reload();
-
targetCityComboBox.setModel(myComboBoxModel);
-
}
-
});
-
-
//---- endButton ----
-
@Override
-
do {
-
frame = frame.getParent();
-
}
-
});
-
}
-
-
/**
-
* Launch the application.
-
*/
-
/* Create and display the form */
-
public void run() {
-
try {
-
MainGui frame = new MainGui();
-
frame.setVisible(true);
-
ex.printStackTrace();
-
}
-
}
-
});
-
}
-
-
@Override
-
-
}
-
-
@Override
-
-
}
-
-
@Override
-
-
}
-
-
@Override
-
-
}
-
-
@Override
-
-
}
-
-
@Override
-
myComboBoxModel.reload();
-
targetCityComboBox.setModel(myComboBoxModel);
-
}
-
-
@Override
-
-
}
-
}
Grüße
Wambui
JComboBox auffristen nach Listenänderung
Categories: JComboBox auffristen nach Listenänderung
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire