getSelectedIndex JComboBox

时间:2015-09-11 10:44:59

标签: jcheckbox selectedindex

我有一个学校作业将GUI计算器从RadioButton更改为JComboBox。我做了改变,但我有一些问题。 第一个是出于某种原因,当我选择计算时,它不起作用 我需要在从JComboBox中选择选项后直接计算它。 我必须使用选定的Index方法作为赋值的一部分。 这是我的代码:

<code>

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;


import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class TaschenrechnerGUIV2 extends JFrame{

private static final long serialVersionUID = 3006212012028893840L;

private JTextField eingabe1, eingabe2;
double x, y, ergebnis = 0;

String [] option = {"addition", "subtraktion", "multiplikation", "division"};//array JList
private JComboBox <String> optionComboBox = new JComboBox <String>(option);//need to import the JComboBox 

private JButton schaltflaecheBerechnen, schaltflaecheBeenden;

private JLabel ausgabe;

class MeinListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getActionCommand().equals("ende")) 
            System.exit(0);

        if (e.getActionCommand().equals("rechnen"))  
            ausgabe.setText(berechnen());


        if (e.getSource() instanceof JComboBox){

                ausgabe.setText(berechnen());
            }
        }
    }


    public TaschenrechnerGUIV2(String titel) {

    super(titel);

    JPanel panelEinAus, panelBerechnung, panelButtons, gross;

    panelEinAus = panelEinAusErzeugen();
    panelBerechnung = panelBerechnungErzeugen();
    panelButtons = panelButtonErzeugen();

    gross = new JPanel();
    gross.add(panelEinAus);
    gross.add(panelBerechnung);

    add(gross,BorderLayout.CENTER);

    add(panelButtons, BorderLayout.EAST);
    optionComboBox.setEnabled(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setVisible(true);
    setResizable(false);
    setLocationRelativeTo(null);
    }


    private JPanel panelEinAusErzeugen() {
    JPanel tempPanel = new JPanel();

    eingabe1 = new JTextField(10);
    eingabe2 = new JTextField(10);
    ausgabe = new JLabel("");

    tempPanel.setLayout(new GridLayout(0,2,10,10));

    tempPanel.add(new JLabel("Zahl 1:"));
    tempPanel.add(eingabe1);

    tempPanel.add(new JLabel("Zahl 2: "));
    tempPanel.add(eingabe2);

    tempPanel.add(new JLabel("Ergebnis: "));
    tempPanel.add(ausgabe);

    tempPanel.setBorder(new TitledBorder("Ein- und Ausgabe"));

    return tempPanel;
    }
     private JPanel panelBerechnungErzeugen() {
    JPanel tempPanel = new JPanel();

    tempPanel.add(optionComboBox);//add the JComboBox to the panel 
    tempPanel.setLayout(new GridLayout(0,1));
    tempPanel.setBorder(new TitledBorder("Operation: "));
    return tempPanel;
    }

    private JPanel panelButtonErzeugen() {
    JPanel tempPanel = new JPanel();

    schaltflaecheBeenden = new JButton(" Beenden ");
    schaltflaecheBeenden.setActionCommand("ende");
    schaltflaecheBerechnen = new JButton("Berechnen");
    schaltflaecheBerechnen.setActionCommand("rechnen");

    tempPanel.setLayout(new GridLayout(0,1));
    tempPanel.add(schaltflaecheBerechnen);
    tempPanel.add(new JLabel());
    tempPanel.add(schaltflaecheBeenden);


    MeinListener listener = new MeinListener();
    schaltflaecheBeenden.addActionListener(listener);
    schaltflaecheBerechnen.addActionListener(listener);
    optionComboBox.addActionListener(listener);//adding a listener to the JComboBox 

    return tempPanel;
    }
    private String berechnen() {

    double x, y, ergebnis = 0;
    boolean fehlerFlag = false;

    try {
        x = Double.parseDouble(eingabe1.getText());
    }
    catch (Exception NumberFormatException) {
        fehlermeldung(eingabe1);
        return ("Nicht definiert");
    } 
    try {
        y = Double.parseDouble(eingabe2.getText());
    }
    catch (Exception NumberFormatException) {
        fehlermeldung(eingabe2);

        return ("Nicht definiert");
    }

    if (optionComboBox.getSelectedIndex() ==0){
        ergebnis = x + y;
    }
    if (optionComboBox.getSelectedIndex() ==1){
        ergebnis = x - y;
    }
    if (optionComboBox.getSelectedIndex() ==2){
        ergebnis = x * y;
    }
    if (optionComboBox.getSelectedIndex() ==3){
        if(y !=0)
        ergebnis = x / y;           
    }

        else 
            fehlerFlag = true;


    if (fehlerFlag == false) {

        DecimalFormat formatFolge = new DecimalFormat("0.##");

        return (formatFolge.format(ergebnis));
    }
    else    return ("Nicht definiert");     }

private void fehlermeldung(JTextField eingabefeld) {
    JOptionPane.showMessageDialog(this, "Ihre Eingabe ist nicht gültig","Eingabefehler", JOptionPane.ERROR_MESSAGE);
    eingabefeld.requestFocus();
}
public static void main (String [] arg){
new TaschenrechnerGUIV2("Taschenrechner V2"); }}

</code>

1 个答案:

答案 0 :(得分:2)

您忘记包含 ActionListener 应该收听的内容。 zB。

object set = e.getSorce();
if(set instanceof JComboBox){
if (optionComboBox.getSelectedIndex() ==0){
    ergebnis = x + y;
}
if (optionComboBox.getSelectedIndex() ==1){
    ergebnis = x - y;
}
if (optionComboBox.getSelectedIndex() ==2){
    ergebnis = x * y;
}
if (optionComboBox.getSelectedIndex() ==3){
    if(y !=0)
    ergebnis = x / y;           
}
}