当前位置: 首页 > 知识库问答 >
问题:

如何在创建多个类似的jbutton时防止重复

司徒骞尧
2023-03-14

我正在尝试学习java GUI,但我似乎注意到在尝试创建多个类似按钮时存在大量重复。例如在这段代码中:


JButton btnAddCar = new JButton("Add Car");
btnAddCar.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddCar.setBounds(5, 5, 355, 155);
addInternalFrame.getContentPane().add(btnAddCar);

JButton btnAddHybridCar = new JButton("Add Hybrid Car");
btnAddHybridCar.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddHybridCar.setBounds(5, 165, 355, 155);
addInternalFrame.getContentPane().add(btnAddHybridCar);

JButton btnAddVan = new JButton("Add Van");
btnAddVan.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddVan.setBounds(5, 325, 355, 155);
addInternalFrame.getContentPane().add(btnAddVan);

JButton btnAddMotorcycle = new JButton("Add Motorcycle");
btnAddMotorcycle.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddMotorcycle.setBounds(5, 485, 355, 155);
addInternalFrame.getContentPane().add(btnAddMotorcycle);

JButton btnAddHybridMotorcycle = new JButton("Add Hybrid Motorcycle");
btnAddHybridMotorcycle.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddHybridMotorcycle.setBounds(5, 645, 355, 155);
addInternalFrame.getContentPane().add(btnAddHybridMotorcycle);

JButton btnAddCustomer = new JButton("Add Customer");
btnAddCustomer.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddCustomer.setBounds(365, 5, 355, 155);
addInternalFrame.getContentPane().add(btnAddCustomer);

JButton btnAddVIPCustomer = new JButton("Add VIP Customer");
btnAddVIPCustomer.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddVIPCustomer.setBounds(365, 165, 355, 155);
addInternalFrame.getContentPane().add(btnAddVIPCustomer);

JButton btnAddEmployee = new JButton("Add Employee");
btnAddEmployee.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddEmployee.setBounds(365, 325, 355, 155);
addInternalFrame.getContentPane().add(btnAddEmployee);

JButton btnAddDepartmentManager = new JButton("Add Department Manager");
btnAddDepartmentManager.setFont(new Font("Tahoma", Font.PLAIN, 20));
btnAddDepartmentManager.setBounds(365, 485, 355, 155);
addInternalFrame.getContentPane().add(btnAddDepartmentManager);

有没有一种更短、更美观的方式来编写这段代码

共有1个答案

牧熙云
2023-03-14

您可以尝试将按钮创建外包到这样的方法中

注意:您可能还必须添加addInternalFrame作为参数

private JButton createButton(String name, int x, int y){
      JButton button = new JButton(name);
      button.setFont(new Font("Tahoma", Font.PLAIN, 20));
      button.setBounds(x, y, 355, 155);
      addInternalFrame.getContentPane().add(button);
      return button;
    }

并用它创建您的按钮

JButton btnAddCar = createButton("Add Car", 5, 5);
JButton btnAddHybridCar = createButton("Add Hybrid Car", 5, 165);
 类似资料:
  • 问题内容: 我正在使用MVC创建一个基本的计算器。到目前为止,我正在改编一个教程,该教程仅将两个用户输入的值加在一起。 目前,我要添加到视图中的每个按钮都有其自己的侦听器,可以。但是,根据教程的控制器每个按钮只有一个ActionListener内部类。这重复了大量代码。 如何为所有按下的按钮创建一个ActionListener类,并在按下的按钮的ID上使用case语句? 在视图中注册oneButt

  • 我试图将每个列表都位于嵌套对象内的webservice模型映射到更简单的对象。 模型1 映射非常简单: 映射工作正常,除了一个问题。当我将带有null子级的父母映射到父母2并返回父母时,儿童对象是用空列表创建的。有什么方法可以防止这种情况吗?

  • 问题内容: 创建数组时,NumPy非常有用。如果for的第一个参数具有and方法,则根据它们可能是有效序列使用它们。 不幸的是,我想创建一个包含没有NumPy是“有用的”的数组。 分解为一个最小的示例,该类将如下所示: 如果“可迭代对象”的长度不同,那么一切都很好,而我得到的结果恰好是我想要的: 但是NumPy会创建一个多维数组,如果它们恰好具有相同的长度: 不幸的是,只有一个参数,所以我想知道是

  • 问题内容: 我正在尝试保存要分析的歌曲信息,但是如果该歌曲已经存在于分析中,我希望我的代码什么也不做。 我在下面尝试过此代码: 上面的代码在日志中给出以下结果: 成功取得4分。歌曲已存在成功检索到4个乐谱。歌曲已存在成功检索到4个乐谱。歌曲已存在成功检索到4个乐谱。歌曲已存在成功成功成功成功成功成功成功成功成功成功成功成功 为什么我的for循环比Objects.count循环更多?以及如何防止解析

  • 我正在寻找一个更好的解决方案的秘密旋转和发现保险库动态秘密是一个很好的一个。通过启用秘密引擎,例如数据库,应用程序/服务可以租赁动态秘密。 我注意到每次应用程序租用数据库机密时,Vault都会在数据库中创建一个新的用户/帐户。我明白,每个应用程序/服务需要是一个好公民,并根据租赁时间使用秘密。然而,在微服务环境中,实现bug可能导致服务请求太多动态机密,从而触发在数据库中创建太多帐户。 有什么方法

  • 问题内容: 我正在编写一个在Linux上运行的Java应用程序(使用Sun的JDK)。它一直在创建目录,我想防止这样做。有什么方法可以阻止Java创建这些文件? 问题答案: 尝试JVM选项 -XX:-UsePerfData 更多信息 来自链接https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html的以下内容可能会有所帮