java如何使用接受字符串作为组合框名称的方法填充JComboBox
我想在GUI中填充多个JComboBox
。所以我想使用一个方法,它接受每个JComboBox
名称作为参数。这可能吗
cmbCustomers.addItem("customer name");
在上面的代码中,我想用传递给populate方法的任何可能的字符串替换CMBCusters
我曾尝试通过一个populate方法传递一个字符串参数来动态替换ComboxName,但这似乎真的不可能
我正在制作一个GUI,用数据库中的数据填充JTables
。在特定JTable
中选择一行会用所选行的数据填充一组JComboBoxes
。从这里可以使用JComboBoxes
更改数据并将其保存回数据库。由于有多个JComboBoxes
,我希望避免重复这么多代码
# 1 楼答案
为什么要为任何东西动态创建代码名?很少有理由这样做。如果将组合框称为“box1”或“mybox”,会有什么区别?如果在运行时之前不知道combobox的变量名,您将如何编写代码来操作combobox的内容
也就是说,所有组件都有一个setName()和一个getName()方法,您当然可以随时修改该内部名称。然后你可以做如下事情:
诚然,这是一个相当糟糕的设计,用于修改特定组合框中的内容类型,但它是可以做到的
# 2 楼答案
通常,Java变量名只在编译时可用。不能在运行时将字符串值用作变量名1。相反,您应该使用通用的面向对象原则来解决问题。在这种情况下,您可以编写一个接受JComboBox参数的方法:
现在,您可以使用任何JComboBox调用此方法。请注意,传递给方法的参数的名称无关紧要。它可以是你想要的任何东西。例如:
或者
我强烈建议你尽可能多地学习方法和参考变量。这些概念对Java编程至关重要,它们将帮助您理解我上面的建议,并帮助您在将来使用它们解决类似的问题
1从技术上讲,您可以使用反射API来实现这一点。反射用于代码工具中的代码内省,而不是用于标准的日常编程。你绝对不应该用它来解决常见的问题,比如这里提到的问题