我有2個JComboBoxes填充了相同的條目(來自ENUM列表) 我有選擇的項目更改時的行動事件,但我們有要求,我無法弄清楚。交換JComboBox選擇
該代碼正在轉換貨幣...如果Box1 = USD和Box2 =歐元,然後我將Box1更改爲= ERUO,則需要Box2 = USD。以下是我的動作監聽器
fromCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String finalAmt = convertCurr(fromField.getText(),
fromCombo.getSelectedItem().toString(),
toCombo.getSelectedItem().toString());
//Check for Errors
try {
Double.parseDouble(finalAmt);
//CHANGE LABELS
toLabel.setText(finalAmt + " " +
toCombo.getSelectedItem().toString());
toField.setText(String.valueOf(finalAmt));
} catch (NumberFormatException nfe) {
fromLabel.setText(finalAmt);
toLabel.setText(finalAmt);
toField.setText(finalAmt);
} finally {
fromLabel.setText(fromField.getText() + " " +
fromCombo.getSelectedItem().toString() + " equals");
}
}
});
toCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String finalAmt = convertCurr(fromField.getText(),
fromCombo.getSelectedItem().toString(),
toCombo.getSelectedItem().toString());
//Check for Errors
try {
Double.parseDouble(finalAmt);
//CHANGE LABELS
toLabel.setText(finalAmt + " " +
toCombo.getSelectedItem().toString());
toField.setText(String.valueOf(finalAmt));
} catch (NumberFormatException nfe) {
fromLabel.setText(finalAmt);
toLabel.setText(finalAmt);
toField.setText(finalAmt);
} finally {
fromLabel.setText(fromField.getText() + " " +
fromCombo.getSelectedItem().toString() + " equals");
}
}
});
fromField.postActionEvent();
任何人都可以幫我弄清楚這一點嗎?是否需要更多信息?
編輯:這是一個樣本,減肥,代碼庫。
public class tDropDowns extends JPanel implements ActionListener {
private final JComboBox<CurrencyConstant> fromCombo;
private final JComboBox<CurrencyConstant> toCombo;
public tDropDowns() {
fromCombo = new JComboBox<>(CurrencyConstant.values());
fromCombo.setName("fromCombo");
toCombo = new JComboBox<>(CurrencyConstant.values());
toCombo.setName("toCombo");
// TODO: Layout code goes here...
JPanel entryFields = new JPanel();
entryFields.setLayout(new GridBagLayout());
//entryFields.setBorder(new EmptyBorder(10, 10, 10, 10));
entryFields.setAlignmentX(Component.LEFT_ALIGNMENT);
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(5, 10, 5, 10);
gbc.gridx = 0;
gbc.gridy = 0;
entryFields.add(fromCombo, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
entryFields.add(toCombo, gbc);
this.add(entryFields);
// Set initial values:
fromCombo.setSelectedItem(CurrencyConstant.USD);
toCombo.setSelectedItem(CurrencyConstant.EUR);
fromCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
toCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
}
@Override
public void actionPerformed(ActionEvent arg0)
{
}
public static void createAndShowGUI() {
JFrame frame = new JFrame("Currency Converter Dropdowns");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(300, 150));
JComponent newContentPane = new tDropDowns();
newContentPane.setLayout(new BoxLayout(newContentPane,
BoxLayout.PAGE_AXIS));
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setResizable(false);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(tDropDowns::createAndShowGUI);
}
}
如果可能的話,請張貼整個班級,以便更方便地測試行爲,而無需自己構建整個JFrame。 – DiabolicWords
我繼續前進,剝離出JFrame信息,僅僅是爲了兩個下拉菜單。 – Wes