如何将 actionPerformed( ActionEvent e ) 与多个按钮一起使用?

2024-04-08

所以我的作业要求创建一个顺序文件。我的教授给了我这个执行操作的简单代码:

    public void actionPerformed( ActionEvent e )  { 

    //FOR STATE AND COUNTRY
    String country = (String)comboBox_1.getSelectedItem();
        Object o = states.get( country );

        if (o == null)
        {
            comboBox_2.setModel( new DefaultComboBoxModel() );
        }
        else
        {
            comboBox_2.setModel( new DefaultComboBoxModel( (String[])o ) );
        }
        //****DONE WITH THE STATE AND COUNTRY COMBOBOXEZ*****

    addRecord( ) ;



    if ( e.getSource( ) == btnDone )  {
      try {
        output.close( ); 
      }
      catch ( IOException io )  {
        System.err.println( "File not closed properly\n" +
           e.toString( ) );
        System.exit(1);
      }



      System.exit(0); 


    }
  } 

}
它基本上说,如果您点击“完成”按钮之外的任何按钮,它都会创建一个顺序文件。我应该如何选择每个动作的作用?我做了一个包含国家和州的 jcombobox,当我选择一个国家/地区时,它会创建文件,然后将我带到该国家/地区的州。希望你能帮助我,谢谢。


我不确定我完全理解你的问题,但是......

您可以使用:

  • ActionEvent#getSource https://docs.oracle.com/javase/8/docs/api/java/util/EventObject.html#getSource--获取事件的源组件。假设您可以引用其他组件,您可以简单地使用它来比较它们,例如if (e.getSource( ) == btnDone) {
  • ActionEvent#getActionCommand https://docs.oracle.com/javase/8/docs/api/java/awt/event/ActionEvent.html#getActionCommand--它返回actionCommand与组件关联(通过设置setActionCommand在支持组件上),它为您提供了确定事件类型的方法,而无需引用源组件,当您可能有一个可以以多种不同方式触发的“通用”操作时,这也很有用。

现在,一般来说,当actionPerformed被调用时,您想要确定触发该操作的原因并采取适当的操作,因此对于您的代码来说,您可能会做一些更像...

if (e.getSource() == comboBox_1) {
    String country = (String) comboBox_1.getSelectedItem();
    Object o = states.get(country);

    if (o == null) {
        comboBox_2.setModel(new DefaultComboBoxModel());
    } else {
        comboBox_2.setModel(new DefaultComboBoxModel((String[]) o));
    }
    //****DONE WITH THE STATE AND COUNTRY COMBOBOXEZ*****

    addRecord();
} else if (e.getSource() == btnDone) {
    try {
        output.close();
    } catch (IOException io) {
        System.err.println("File not closed properly\n"
                + e.toString());
        System.exit(1);
    }

    System.exit(0);

}

这是一种相当“古老”的设计方法ActionListener,这让人回想起前几天内部/匿名类 https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html,其中创建一个单一的更简单ActionListener class.

现在,通常更可取的是使用内部/匿名类来生成小型、隔离和上下文监听器,这可能看起来像......

comboBox_1.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        String country = (String) comboBox_1.getSelectedItem();
        Object o = states.get(country);

        if (o == null) {
            comboBox_2.setModel(new DefaultComboBoxModel());
        } else {
            comboBox_2.setModel(new DefaultComboBoxModel((String[]) o));
        }
        //****DONE WITH THE STATE AND COUNTRY COMBOBOXEZ*****

        addRecord();
    }
});

这是一个独立的、上下文相关的单元作品,专为单一用途的作品而设计。一般来说,它更容易阅读和维护,因为上下文定义良好,并且您不会试图绕过一堆不相关的工作。

如果您需要更可重用的东西,那么您应该看看如何使用动作 http://docs.oracle.com/javase/tutorial/uiswing/misc/action.html

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

如何将 actionPerformed( ActionEvent e ) 与多个按钮一起使用? 的相关文章

  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • Java:无法从同一包中的不同类访问静态变量

    这很奇怪 因为我有一个可以访问 Frame dimension getWidth 的 Character 类 及其伙伴 getHeight 但是当我想在 Map 类中使用它时 Eclipse 强调了它并且无法给我反馈 运行该程序最终会出现
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 如何将 Mat (opencv) 转换为 INDArray (DL4J)?

    我希望任何人都可以帮助我解决这个任务 我正在处理一些图像分类并尝试将 OpenCv 3 2 0 和 DL4J 结合起来 我知道DL4J也包含Opencv 但我认为它没什么用 谁能帮我 如何转换成 INDArray 我尝试阅读一些问题here
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • 是否可以通过编程方式查找 logback 日志文件?

    自动附加日志文件以支持电子邮件会很有用 我可以以编程方式设置路径 如以编程方式设置 Logback Appender 路径 https stackoverflow com questions 3803184 setting logback
  • 如何检测 Java 字符串中的 unicode 字符?

    假设我有一个包含 的字符串 我如何找到所有这些 un icode 字符 我应该测试他们的代码吗 我该怎么做呢 例如 给定字符串 A X 我想将其转换为 AYXY 我想对其他 unicode 字符做同样的事情 并且我不想将它们存储在某种翻译映
  • 生成的序列以 1 开头,而不是注释中设置的 1000

    我想请求一些有关 Hibernate 创建的数据库序列的帮助 我有这个注释 下面的代码 在我的实体类中 以便为合作伙伴表提供单独的序列 我希望序列以 1000 开头 因为我在部署期间使用 import sql 将测试数据插入数据库 并且我希
  • 如何避免 ArrayIndexOutOfBoundsException 或 IndexOutOfBoundsException? [复制]

    这个问题在这里已经有答案了 如果你的问题是我得到了java lang ArrayIndexOutOfBoundsException在我的代码中 我不明白为什么会发生这种情况 这意味着什么以及如何避免它 这应该是最全面的典范 https me
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • Java Swing:需要一个高质量的带有复选框的开发 JTree

    我一直在寻找一个 Tree 实现 其中包含复选框 其中 当您选择一个节点时 树中的所有后继节点都会被自动选择 当您取消选择一个节点时 树中其所有后继节点都会自动取消选择 当已经选择了父节点 并且从其后继之一中删除了选择时 节点颜色将发生变化

随机推荐

  • 将静态数据(不随时间变化)添加到 LSTM 中的序列数据

    我正在尝试建立一个如下图所示的模型 请看下图 我想在 LSTM 层中传递序列数据 在另一个前馈神经网络层中传递静态数据 血型 性别 后来我想将它们合并 然而 我对这里的维度感到困惑 如果我的理解是正确的 如图所示 5维序列数据如何与4维静态
  • 提取 Zip 内的目录

    我正在编写一个脚本 将 zip 存档中的文件提取到该脚本所在的目录中 这是我的代码 zip new ZipArchive if zip gt open latest zip TRUE zip gt extractTo zip gt clos
  • Web 服务器内置 Azure 应用服务

    背景 我正在托管一个静态 Web 应用程序 由 NUXTJS 在 Azure 应用服务上生成 现在我想通过以下方式配置更多内容web config比如为多个域设置 CORS 设置 但我找不到任何文档来确定 Azure 应用程序服务中集成 安
  • VB.NET 和 COM Interop 看似随机崩溃

    我正在考虑用 VB 6 重写一个全新的 VB NET 应用程序 该应用程序在终端服务下运行并大量使用 COM 由于某种原因 该应用程序存在随机奇怪之处 随机访问冲突错误 WinDbg 异常分析指向 dll 如 comdlg32 dll ms
  • Bigquery 如果字段存在

    简而言之 有没有办法在不存在的 BQ 字段中进行查询 并接收这些字段的 null 值 我有几乎同样的问题BigQuery IF 字段存在 THEN https stackoverflow com questions 32276601 big
  • PL/SQL 游标 for 循环

    我相信我需要一个循环游标来浏览表 test data 中的 street1 列 我有一个程序需要测试表中的每一行 这是我到目前为止所拥有的 cursor c1 is street1 from test data Begin If Instr
  • 如何调用Parent重写方法

    我有两个类 Parent 和 Child 从 Child 类 我调用父类重写方法 show 从父类 我调用另一个方法 display 但由于调用了 Child 方法 该方法也被重写 我想从show方法调用Parent方法display pu
  • jQuery - 翻转时更改另一个图像的 src

    我想知道是否有人可以帮助我 我有 2 张图像 如果有意义的话 我希望能够在翻转另一张图像时更改其中一张图像的 src 例如 我有 2 张图片 当有人将鼠标悬停在 imimage2 jpg 上时 我希望 imimage1 jpg 更改为 im
  • 我如何将长文本视图(字符串)显示到android的多个页面中

    我正在开发一个看起来像电子书阅读器 text pdf 文件等 的应用程序 我有一个巨大的文本 分为不同的章节或页面 现在的问题是如何将整个内容分成若干页并一页一页地显示 我怎么知道屏幕适合的字符数 取决于屏幕尺寸和字体大小 我完全不知道从哪
  • Javascript 加载、就绪、domready、DOMContentLoaded 事件

    我有点迷失在 启动 事件 有很多不同的事件 并且在 DOM 和各种框架 如 jQuery 中以不同的方式命名 所有可能的启动事件有哪些 它们有何不同 您能否显示一个简单的时间线来演示这些事件的触发顺序 ready JavaScript 提供
  • 逻辑运算的快捷方式

    我只是想知道 逻辑运算符 就像如果我想做类似的事情i i 10 我可以i 10 我搜索这个的原因是因为我有一个验证函数 它分为几个函数 以下是模拟 function f1 return Math ceil Math random 10 2
  • React JS 中适合父容器的多行文本

    我正在使用 Flexbox 布局 并尝试调整特定 div 中的文本大小以适合该 div 例如 如果我有如下代码 div div A really really really really long phrase here that will
  • 请注意,文档的某些部分可能包含文档检查器无法删除的个人信息

    I use Excel 2013 and Power View and SQL Server 2008 R2 创建我的后Data Source and my chart in Excel当我想要保存 Excel 文件时 我收到此消息 be
  • Elm - 检查值的类型

    是否存在检查 Elm 中变量类型的函数 例如 重复 numberTwo 2 returnType numberTwo number String 这样做的动机是当你使用Signal map n 通常会出现这样的情况 并非所有要应用的函数的参
  • 从外部访问 Leaflet.js GeoJson 功能

    我想从外部与传单驱动的地图的 GeoJson 覆盖层 多边形 进行交互L 的领域 但我似乎无法访问由L 互动包括 获取边界 我的特征 fitBounds 我的特征 设置样式 ETC 我可以看到 Leaflet 暴露了 L GeoJSON g
  • Nim 中的迭代器生成函数:在分配迭代器时起作用,在直接调用它时卡住

    我尝试创建一个创建迭代器的过程 如下所示 proc makeCDFrom start int iterator int result iterator int var i int start while i gt 0 echo i i yi
  • 将 Array 转换为原始方法来表达相同的结果,不使用 LINQ,仅使用 int。

    我的程序记录了四个房间在瓶子驱动器中收集的瓶子数量 当用户输入 quit 时 会显示每个房间收集的瓶子数量 并打印出拥有最多瓶子的房间 我使用了一个数组来跟踪房间号 如何更改方法而不是使用数组 我想启动 room1 room2 room3
  • Android Intent 启动应用程序的主要活动

    我正在尝试从 BroadcastReceiver 内部启动主要活动 我不想提供活动类名称 而是使用 android 的操作和类别来找出主要活动 这似乎不起作用 发送代码 Intent startIntent new Intent start
  • JavaScript 正则表达式文字在函数调用之间保持不变

    我有这段代码 function func1 text var pattern s S lt attrib if else if else end if search for end for s S gt g var result while
  • 如何将 actionPerformed( ActionEvent e ) 与多个按钮一起使用?

    所以我的作业要求创建一个顺序文件 我的教授给了我这个执行操作的简单代码 public void actionPerformed ActionEvent e FOR STATE AND COUNTRY String country Strin