我有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