私は2つのJComboBoxに同じエントリ(ENUMリストから)を設定しました 選択したアイテムが変更されたときのアクションイベントがありますが、私には分かりません。JComboBoxの選択をスワップ
コードが通貨を変換しています... Box1 = USD、Box2 = EUROの場合、Box1をERUOに変更するとBox2 to = USDが必要になります。以下は私のActionListenerには、誰もが、私はこれを理解助けることができ
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
私は先に進み、2つのドロップダウンのためだけにJFrame情報を取り除きました。 – Wes