Hallo,
ich habe eine Form, bei der nach Auswahl in 2 Comboboxen Textfelder und Checkboxen dynamisch erstellt werden.
Das funktioniert soweit alles ganz gut, bis auf meine Checkboc (chkLubi). Wenn ich meine Auswahl in den ersten beiden Comboboxen ändere wird der oben gezeigte Code ausgeführt.
Bei Änderung von chkLubi wird eine MessageBox geöffnet. Ber ersten Laden von createStep3() wird diese Messagebox einmal aufgerufen, beim zweiten Laden zweimal, beim dritten Laden dreimal usw.
Wie kann ich das verhindern??? Ich möchte immer nur einmal die Messagebox haben. Irgendwie steh ich auf dem Schlauch. Habe schon ein checkLubi.removeActionListener() probiert, aber irgendwie komm ich nicht klar.
Ist für euch wahrscheinlich ein ganz simples Problem ...
Danke
chrissy
ich habe eine Form, bei der nach Auswahl in 2 Comboboxen Textfelder und Checkboxen dynamisch erstellt werden.
Code:
private void createStep3()
{
pnlStep3 = new JPanel(new GridBagLayout());
pnlStep3.setVisible(true);
int widthSum = summary.getPreferredSize().width;
lblKA = new JLabel(langPack.getString("kA"));
Dimension dimLabel = lblKA.getPreferredSize();
dimLabel.width = widthSum * 1 / 3;
lblKA.setPreferredSize(dimLabel);
String[] strKA =
{ langPack.getString("CaseMin"), langPack.getString("CaseMid"),
langPack.getString("CaseMax") };
cboKA = new SteppedComboBox(strKA);
//Default parameter
Vector Value = new Vector();
Value.add("F ");
Value.add("p ");
Value.add("<html><font>T<sub>amb</sub> </font>");
Vector Unit = new Vector();
Unit.add("[N]");
Unit.add("<html><font>[N/mm<sup>2</sup>] </font>");
Unit.add("[\u00B0C]");
Vector Tooltip = new Vector();
Tooltip.add(langPack.getString("Force"));
Tooltip.add(langPack.getString("p"));
Tooltip.add(langPack.getString("Tamb"));
if (cboStep1.getSelectedIndex() == 1)
{
Value.add("t ");
Unit.add("[h]");
Tooltip.add(langPack.getString("t"));
}
else if (cboStep1.getSelectedIndex() == 2)
{
Value.add("<html><font>s<sub>W,crit</sub> </font>");
Unit.add("[\u00B5m]");
Tooltip.add(langPack.getString("sWcrit"));
}
if ((cboStep2.getSelectedIndex() == 1) ||
(cboStep2.getSelectedIndex() == 5))
{
Value.add("U ");
Value.add("D ");
Value.add("B ");
Unit.add("[m/s]");
Unit.add("[mm]");
Unit.add("[mm]");
Tooltip.add(langPack.getString("U"));
Tooltip.add(langPack.getString("D"));
Tooltip.add(langPack.getString("B"));
}
else if ((cboStep2.getSelectedIndex() == 2) ||
(cboStep2.getSelectedIndex() == 4))
{
Value.add("\u03C6 ");
Value.add("\u03A9 ");
Value.add("D ");
Value.add("B ");
Unit.add(langPack.getString("UnitGrad"));
Unit.add("[Hz]");
Unit.add("[mm]");
Unit.add("[mm]");
Tooltip.add(langPack.getString("phi"));
Tooltip.add(langPack.getString("Omega"));
Tooltip.add(langPack.getString("D"));
Tooltip.add(langPack.getString("B"));
}
else if (cboStep2.getSelectedIndex() == 3)
{
Value.add("\u03C6 ");
Value.add("\u03A9 ");
Value.add("<html><font>D<sub>i</sub> </font>");
Value.add("<html><font>D<sub>o</sub> </font>");
Unit.add(langPack.getString("UnitGrad"));
Unit.add("[Hz]");
Unit.add("[mm]");
Unit.add("[mm]");
Tooltip.add(langPack.getString("phi"));
Tooltip.add(langPack.getString("Omega"));
Tooltip.add(langPack.getString("Di"));
Tooltip.add(langPack.getString("Do"));
}
else if (cboStep2.getSelectedIndex() == 6)
{
Value.add("U ");
Value.add("<html><font>D<sub>i</sub> </font>");
Value.add("<html><font>D<sub>o</sub> </font>");
Unit.add("[m/s]");
Unit.add("[mm]");
Unit.add("[mm]");
Tooltip.add(langPack.getString("U"));
Tooltip.add(langPack.getString("Di"));
Tooltip.add(langPack.getString("Do"));
}
lblValue = new JLabel[Value.size()];
lblUnit = new JLabel[Value.size()];
txtInput = new JTextField[Value.size()];
Dimension d = new Dimension(75, 25);
if (defValue.isEmpty()) defValue = setDefaults();
cboKA.setSelectedIndex(Integer.parseInt(defValue.elementAt(0).toString()));
for (int i = 0; i < Value.size(); i++)
{
lblValue[i] = new JLabel(Value.elementAt(i).toString());
lblValue[i].setHorizontalAlignment(JLabel.RIGHT);
lblValue[i].setToolTipText(Tooltip.elementAt(i).toString());
txtInput[i] = new JTextField();
txtInput[i].setPreferredSize(d);
txtInput[i].setText(defValue.elementAt(i + 1).toString());
txtInput[i].setSelectionStart(0);
txtInput[i].setSelectionEnd(txtInput[i].getText().length());
txtInput[i].setHorizontalAlignment(JTextField.RIGHT);
actualize();
detailPanel.revalidate();
navPanel.revalidate();
lblUnit[i] = new JLabel(Unit.elementAt(i).toString());
lblUnit[i].setHorizontalAlignment(JLabel.LEFT);
}
int row = 0;
for (row = 0; row < 2; row++)
{
pnlStep3.add(lblValue[row],
new GridBagConstraints(0, row, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.BOTH,
new Insets(0, 0, 2, 0), 0, 0));
pnlStep3.add(txtInput[row],
new GridBagConstraints(1, row, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 0, 2, 0), 0, 0));
pnlStep3.add(lblUnit[row],
new GridBagConstraints(2, row, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(0, 5, 2, 0), 0, 0));
}
pnlStep3.add(lblKA,
new GridBagConstraints(0, row, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.BOTH,
new Insets(0, 0, 2, 0), 0, 0));
pnlStep3.add(cboKA,
new GridBagConstraints(1, row, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 0, 2, 0), 0, 0));
row++;
while (row <= Value.size())
{
pnlStep3.add(lblValue[row - 1],
new GridBagConstraints(0, row, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.BOTH,
new Insets(0, 0, 2, 0), 0, 0));
pnlStep3.add(txtInput[row - 1],
new GridBagConstraints(1, row, 1, 1, 0.0, 0.0,
GridBagConstraints.CENTER,
GridBagConstraints.NONE,
new Insets(0, 0, 2, 0), 0, 0));
pnlStep3.add(lblUnit[row - 1],
new GridBagConstraints(2, row, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(0, 5, 2, 0), 0, 0));
row++;
}
chkLubi.setText(langPack.getString("Lubi"));
if (!defValue.isEmpty())
{
chkLubi.setSelected(new Boolean(defValue.lastElement().toString()));
}
chkLubi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
checkLubricated();
}
});
pnlStep3.add(chkLubi,
new GridBagConstraints(0, row, 3, 1, 1.0, 1.0, GridBagConstraints.WEST,
GridBagConstraints.NONE,
new Insets(2, 0, 2, 0), 0, 0));
pnlStep3.revalidate();
detailPanel.add(pnlStep3,
new GridBagConstraints(0, 2, 2, 1, 1.0, 1.0, GridBagConstraints.CENTER,
GridBagConstraints.BOTH,
new Insets(2, 0, 0, 0), 0, 0));
createState = 3;
actualize();
navPanel.revalidate();
}
Das funktioniert soweit alles ganz gut, bis auf meine Checkboc (chkLubi). Wenn ich meine Auswahl in den ersten beiden Comboboxen ändere wird der oben gezeigte Code ausgeführt.
Bei Änderung von chkLubi wird eine MessageBox geöffnet. Ber ersten Laden von createStep3() wird diese Messagebox einmal aufgerufen, beim zweiten Laden zweimal, beim dritten Laden dreimal usw.
Wie kann ich das verhindern??? Ich möchte immer nur einmal die Messagebox haben. Irgendwie steh ich auf dem Schlauch. Habe schon ein checkLubi.removeActionListener() probiert, aber irgendwie komm ich nicht klar.
Ist für euch wahrscheinlich ein ganz simples Problem ...
Danke
chrissy