有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用接受字符串作为组合框名称的方法填充JComboBox

我想在GUI中填充多个JComboBox。所以我想使用一个方法,它接受每个JComboBox名称作为参数。这可能吗

cmbCustomers.addItem("customer name");

在上面的代码中,我想用传递给populate方法的任何可能的字符串替换CMBCusters

我曾尝试通过一个populate方法传递一个字符串参数来动态替换ComboxName,但这似乎真的不可能

我正在制作一个GUI,用数据库中的数据填充JTables。在特定JTable中选择一行会用所选行的数据填充一组JComboBoxes。从这里可以使用JComboBoxes更改数据并将其保存回数据库。由于有多个JComboBoxes,我希望避免重复这么多代码


共 (2) 个答案

  1. # 1 楼答案

    为什么要为任何东西动态创建代码名?很少有理由这样做。如果将组合框称为“box1”或“mybox”,会有什么区别?如果在运行时之前不知道combobox的变量名,您将如何编写代码来操作combobox的内容

    也就是说,所有组件都有一个setName()和一个getName()方法,您当然可以随时修改该内部名称。然后你可以做如下事情:

      if ( box1.getName().equals(something) ) {
        fillCustomers( box1, customers );
      } else if ( box2.getName().equals( something ) {
        fdillCustomers( box2, customers );
      }
    

    诚然,这是一个相当糟糕的设计,用于修改特定组合框中的内容类型,但它是可以做到的

  2. # 2 楼答案

    通常,Java变量名只在编译时可用。不能在运行时将字符串值用作变量名1。相反,您应该使用通用的面向对象原则来解决问题。在这种情况下,您可以编写一个接受JComboBox参数的方法:

    private void populateComboBox(JComboBox comboBox) {
        comboBox.addItem("customer name");
        // ... do anything else you wish with the comboBox
    }
    

    现在,您可以使用任何JComboBox调用此方法。请注意,传递给方法的参数的名称无关紧要。它可以是你想要的任何东西。例如:

    JComboBox cmbCustomers = new JComboBox();
    populateComboBox(cmbCustomers);
    

    或者

    JComboBox cmbOtherCustomers= new JComboBox();
    populateComboBox(cmbOtherCustomers);
    

    我强烈建议你尽可能多地学习方法和参考变量。这些概念对Java编程至关重要,它们将帮助您理解我上面的建议,并帮助您在将来使用它们解决类似的问题

    1从技术上讲,您可以使用反射API来实现这一点。反射用于代码工具中的代码内省,而不是用于标准的日常编程。你绝对不应该用它来解决常见的问题,比如这里提到的问题