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

2024-02-21

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

    }

}

请帮忙。


The sscce http://sscce.org/明确提供了作业,但练习的目标却不太明确。有几件事值得注意。

  1. GUI 应该构建在事件派发线程 http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html.

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

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

  4. 添加到每个的对象JComboBox是类的实例Integer http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html,它对数学整数的子集进行建模。注意原因valueOf() http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html#valueOf%28int%29“通常应该优先于构造函数使用。”

  5. 无需将任何内容转换为String直到更新显示的时间actionPerformed()。因为getSelectedItem() http://download.oracle.com/javase/7/docs/api/javax/swing/JComboBox.html#getSelectedItem%28%29返回类型的值Object,结果必须转换为Integer;这在本地构建的数据的上下文中是完全安全的。

  6. 一旦Integer值已经恢复,很容易获得总和int value.

  7. 最终的转换结果为sum to a String http://download.oracle.com/javase/7/docs/api/java/lang/String.html留作练习。暗示:String http://download.oracle.com/javase/7/docs/api/java/lang/String.html有一个合适的方法,其名称现在看起来可能很熟悉。

  8. 成为朋友永远不会太早布局管理器的视觉指南 http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html.

修改后的示例:

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> http://download.oracle.com/javase/7/docs/api/javax/swing/ComboBoxModel.html为了安全地改进类型,尽管getSelectedItem()保持向后兼容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 在 Sublime Text 中添加自定义菜单

    如何添加自定义菜单项崇高文本2 有任何想法吗 我看到有一个主 sublime 菜单文件但不知道如何编辑它 Thanks sublime menu 文件只是 JSON 您可以在您的用户目录中创建一个 Main sublime menu 它将与
  • IOS 上的 PWA 和离线存储

    我们希望开发一款 应用程序 能够为评估人员记录受损汽车的详细信息 这个想法是让少数评估员拥有公司的 iPad 然后 当汽车损坏并返回车场时 他们可以参观拍照 输入一些详细信息 然后将其上传到主系统中 有些车场可能位于没有互联网覆盖的区域 因
  • 使用抽象超类作为Spring数据存储库的参数

    我知道如何实现 spring 数据存储库 创建一个像这样的界面 public interface CountryRepository extends CrudRepository
  • .on() 和 .click() 哪个更快?

    如果我有一个带有删除记录链接的表 那么连接单击事件的最佳方法是什么 这些在幕后的评价是否相同 table on click delete function do stuff or table delete click function do
  • 在 Twig 中使用自定义函数

    在我的模板中 我想输出服务器时区 我的模板有类似的东西 getservertimezone 然后在services yml我拥有的那个捆绑包的配置 my twig extension class My WebsiteBundle Exten
  • Switch 语句如何工作

    switch 语句如何立即下降到内存中的正确位置 对于嵌套的 if 语句 它必须与每个语句进行比较 但对于 switch 语句 它会直接转到正确的情况 这是如何实施的 有很多不同的方法来编译switch语句转换成机器码 以下是一些 The
  • C# 中从字符串数组中删除重复字符串的有效方法

    我想知道一种有效的方法来从 C 中的字符串数组中删除重复项 例如 string a abc xyz abc def ghi asdf ghi xd abc 会变成 string a abc xyz def ghi asdf xd 删除重复条
  • 错误:存在未提交的事务

    我在 SSMS 中打开一个新窗口并运行以下命令 SET ANSI DEFAULTS ON GO CREATE PROCEDURE dbo zzz test2 a int AS SET NOCOUNT ON SET a 1 RETURN 0
  • 如何解决 SYNCSORT JCL 中的“WER046A SORT CAPACITY EXCEEDED”问题

    我正在尝试对数据集进行排序并写入新的数据集 每次执行作业时 它都会异常终止 ABEND U0016 消息形式 SYSOUT WER276B SYSDIAG 24646562 29667262 29667262 27500165 WER164
  • 当 DHT 中的节点死亡时,数据会发生什么?

    问题取自这里 https groups google com forum topic byu cs 460 computer networking hpESI0NapmY https groups google com forum topi
  • Cython 中的 extra_compile_args

    我想传递一些额外的选项Cython编译器通过使用extra compile args My setup py from distutils core import setup from Cython Build import cythoni
  • CoreSpotlight 索引

    您好 我正在尝试在我的应用程序中实现 CoreSpotlight 建立索引时 我是否需要每次都运行它 还是在第一次安装应用程序时运行一次就足够了 如果应用程序被删除 我需要再次索引吗 这是我正在使用的代码 void spotLightInd
  • 哪个编译成更快的代码:“n * 3”或“n+(n*2)”?

    哪个编译成更快的代码 and n 3 或 ans n n 2 假设 n 是 int 或 long 并且它运行在现代 Win32 Intel 机器上 如果涉及一些解除引用 这会有所不同吗 也就是说 哪一个会更快 long a long pn
  • 如何使零件在 PartStack 中可移动

    我正在尝试弄清楚如何使零件在 e4 中的零件堆栈中可移动 有任何想法吗 为了支持拖放部件 您需要在 Application e4xmi 中指定 DndAddon 和 CleanupAddon 类 URI 是 bundleclass org
  • 授予 PostgreSQL 中特定数据库的权限

    我正从 MySQL 迁移到 PostgreSQL 但在用户权限方面遇到了困难 我习惯使用以下命令为用户分配数据库所有表的所有权限 MySQL grant all privileges on mydatabase to myuser loca
  • 违反实体框架代码优先链接表中的 PRIMARY KEY 约束

    我有一个用户表和一个角色表 有一个自动生成的 UsersRoles 链接表 其中包含 User 和 Roles 表中的 Id 这是使用以下代码生成的 modelBuilder Entity
  • 如何使 tkinter 按钮小部件占据网格的整个宽度

    我试过了this https stackoverflow com questions 24945467 python tkinter set entry grid width 100但这没有帮助 我正在制作一个计算器程序 到目前为止我已经做
  • 了解 Angular 2 中的变化检测

    我在 Angular 2 文档中遇到过以下示例 Component selector cmp changeDetection ChangeDetectionStrategy OnPush template Number of ticks n
  • 如何使用 Espresso 测试操作栏上的主页按钮?

    我已启用主页按钮以返回到上一个视图 简单地说 这样做 getActionBar setDisplayHomeAsUpEnabled true 我正在使用最新版本com android support appcompat v7 21 0 2
  • JComboBox 如何从两个 JComboBox 计算两个整数,并在单击 JButton 时将结果保存在 JTextfield 中

    我有2个JComboBox由数字组成combobox1 1 to 5 and combobox2 1 to 6 当我点击我的JButton 我希望将两个选定的数字相加并显示在Textfield 除了计算以及如何将结果放入其中之外 我已经有了