JComboBox 如何从两个 JComboBox 计算两个整数,并在单击 JButton 时将结果保存在 JTextfield 中

发布于 2024-12-09 07:17:37 字数 1579 浏览 4 评论 0原文

我有 2 个 JComboBox,由数字 combobox1= 1 to 5 和 combobox2= 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();

    }

}

​ 帮助。

I have 2 JComboBox consisting of numbers combobox1= 1 to 5 and combobox2= 1 to 6.

and when I click my JButton, I want the two chosen numbers to be added and shown on a Textfield.

I already have the complete code except for the calculation and how to have the result in the 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();

    }

}

Please help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

缱倦旧时光 2024-12-16 07:17:37

提供的sscce显然是作业,但练习的目标却不是那么明确。有几件事值得注意。

  1. GUI 应在事件调度线程上构建.

  2. 按照惯例,类名以首字母大写字母开头。

  3. 为了可读性,应该考虑冗长的初始化。

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

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

  6. 一旦恢复了Integer值,就可以轻松获得int值的总和。

  7. sumString 留作练习。提示:字符串 有一个合适的方法,其名称现在看起来可能很熟悉。

  8. 视觉效果成为朋友永远不会太早布局管理器指南

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用于安全地改进类型,尽管 getSelectedItem() 仍然向后兼容。

The sscce provided is clearly homework, but the goal of the exercise is not so clear. A few things are worth noting.

  1. The GUI should be constructed on the event dispatch thread.

  2. By convention, class names begin with an initial capital letter.

  3. Lengthy initialization should be factored for readability.

  4. The objects added to each JComboBox are instances of the class Integer, which model a subset of the mathematical integers. Note why valueOf() "should generally be used in preference to the constructor."

  5. There's no need to convert anything to a String until it's time to update the display in actionPerformed(). Because getSelectedItem() returns a value of type Object, the result must be cast to Integer; this is perfectly safe in the context of locally constructed data.

  6. Once the Integer values have been recovered, it's easy to obtain the sum as an int value.

  7. The final conversion of the sum to a String is left as an exercise. Hint: String has a suitable method, the name of which may now seem familiar.

  8. It's never too soon to become friends with A Visual Guide to Layout Managers.

image

Revised example:

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();
            }
        });
    }
}

For reference, Java 7 introduces ComboBoxModel<E> for improved type safely, although getSelectedItem() remains backward compatible.

你是暖光i 2024-12-16 07:17:37

我重写了整个脚本(很抱歉给您带来不便)...

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();
    }
}

I've kind of rewritten the entire script (sorry for any inconvenience)...

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();
    }
}
海风掠过北极光 2024-12-16 07:17:37

使用 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));
        }
    });

祝你作业顺利。 ;)

use form.setVisible(true);

then:

    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));
        }
    });

Good luck with your homework. ;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文