JComboBox如何计算来自两个JComboBox的两个整数,并在单击JButton时将结果放在JTextfield中

时间:2011-10-08 05:50:33

标签: java swing jcombobox

我有两个JComboBox由数字combobox1= 1 to 5和c ombobox2= 1 to 6.

组成

当我点击我的JButton时,我希望添加两个所选数字并显示在Textfield.

我已经有完整的代码,除了计算以及如何在textfield.

中得到结果
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class exer1 extends JFrame{

    JFrame form = new JFrame ("haay");
    JButton btn = new JButton ("Compute");
    JTextField txt = new JTextField (10); 
    JComboBox cb1 = new JComboBox();
    JComboBox cb2 = new JComboBox();


public exer1(){

    form.getContentPane().setLayout(null);
    form.setSize (500,550);

    form.getContentPane().add(txt);
    form.getContentPane().add(btn);
    form.getContentPane().add(cb1);
    form.getContentPane().add(cb2);

    cb1.addItem(new Integer(1));
    cb1.addItem(new Integer(2));
    cb1.addItem(new Integer(3));
    cb1.addItem(new Integer(4));
    cb1.addItem(new Integer(5));
    cb2.addItem(new Integer(1));
    cb2.addItem(new Integer(2));
    cb2.addItem(new Integer(3));
    cb2.addItem(new Integer(4));
    cb2.addItem(new Integer(5));
    cb2.addItem(new Integer(6));

    txt.setBounds(150,90,100,30);
    btn.setBounds(40,170,100,40);
    cb1.setBounds(190,140,50,30);
    cb2.setBounds(190,190,50,30);

    btn.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent e){


            }
        });



  form.show();

}




    public static void main (String args []){
        exer1 xx = new exer1();

    }

}

请帮忙。

3 个答案:

答案 0 :(得分:4)

提供的sscce显然是家庭作业,但练习的目标并不那么明确。有些事情值得注意。

  1. 应在event dispatch thread

  2. 上构建GUI
  3. 按照惯例,类名以首字母大写字母开头。

  4. 为了便于阅读,应考虑冗长的初始化。

  5. 添加到每个JComboBox的对象是类Integer的实例,它为数学整数的子集建模。注意为什么valueOf()“通常应该优先于构造函数使用。”

  6. 在更新String中的显示之前,无需将任何内容转换为actionPerformed()。由于getSelectedItem()返回Object类型的值,因此结果必须转换为Integer;这在本地构建的数据中非常安全。

  7. 恢复Integer值后,很容易将总和作为int值。

  8. sumString的最终转换仅作为练习。提示:String有一个合适的方法,其名称现在看起来很熟悉。

  9. A Visual Guide to Layout Managers成为朋友永远不会太早。

  10. image

    修订示例:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class Exercise1 extends JFrame {
    
        JFrame form = new JFrame("Exercise1");
        JButton btn = new JButton("Compute");
        JTextField txt = new JTextField(10);
        JComboBox<Integer> cb1 = new JComboBox<>();
        JComboBox<Integer> cb2 = new JComboBox<>();
    
        public Exercise1() {
            form.setLayout(new GridLayout(0, 1));
            form.add(txt);
            form.add(btn);
            form.add(cb1);
            form.add(cb2);
            for (int i = 1; i <= 5; i++) {
                cb1.addItem(Integer.valueOf(i));
                cb2.addItem(Integer.valueOf(i));
            }
            cb2.addItem(new Integer(6));
            btn.addActionListener(new ActionListener() {
    
                @Override
                public void actionPerformed(ActionEvent e) {
                    Integer v1 = (Integer) cb1.getSelectedItem();
                    Integer v2 = (Integer) cb2.getSelectedItem();
                    int sum = v1.intValue() + v2.intValue();
                    txt.setText("42"); // really should convert sum to a String
                }
            });
    
            form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            form.pack();
            form.setVisible(true);
        }
    
        public static void main(String args[]) {
            EventQueue.invokeLater(new Runnable() {
    
                @Override
                public void run() {
                    Exercise1 exercise1 = new Exercise1();
                }
            });
        }
    }
    

    作为参考,Java 7引入ComboBoxModel<E>以安全地改进类型,尽管getSelectedItem()仍向后兼容。

答案 1 :(得分:3)

我有点改写了整个剧本(抱歉给您带来任何不便)......

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class exer1 extends JFrame implements ActionListener {
    JPanel row1 = new JPanel();
    JLabel first = new JLabel("Select the first number:", JLabel.RIGHT);
    JComboBox fNum = new JComboBox();
    JPanel row2 = new JPanel();
    JLabel second = new JLabel("Select the second number:", JLabel.RIGHT);
    JComboBox sNum = new JComboBox();
    JPanel row3 = new JPanel();
    JButton comp = new JButton("Compute");
    JTextField total = new JTextField(5);

    public exer1() {
        super("Calculator");
        row1.add(first);
        fNum.addItem("1");
        fNum.addItem("2");
        fNum.addItem("3");
        fNum.addItem("4");
        fNum.addItem("5");
        fNum.addItem("6");
        row1.add(fNum);
        add(row1);
        row2.add(second);
        sNum.addItem("1");
        sNum.addItem("2");
        sNum.addItem("3");
        sNum.addItem("4");
        sNum.addItem("5");
        sNum.addItem("6");
        row2.add(sNum);
        add(row2);
        comp.addActionListener(this);
        row3.add(comp);
        total.setEditable(false);
        row3.add(total);
        add(row3);
        setLayout(new FlowLayout());
        setSize(500, 550);
        setVisible(true);
    }

    public void actionPerformed(ActionEvent event) {
        int num1 = Integer.parseInt(fNum.getSelectedItem().toString());
        int num2 = Integer.parseInt(sNum.getSelectedItem().toString());
        total.setText("" + (num1 + num2));
    }

    public static void main(String[] args) {
        exer1 xx = new exer1();
    }
}

答案 2 :(得分:-1)

使用form.setVisible(true);

然后:

    btn.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            int cb1Int = Integer.parseInt(cb1.getSelectedItem().toString());
            int cb2Int = Integer.parseInt(cb2.getSelectedItem().toString());
            txt.setText(String.valueOf(cb1Int + cb2Int));
        }
    });

祝你好作业。 ;)