好吧,这可能看起来像一个奇怪的问题,但有没有一种方法,在调用类似jPanel3.getComponent(0).getName();我可以用这个值来调用变量。基本上,如果它返回jLabel1。我可以用它来调用标签上的东西,比如. setText("Hi");而不必键入jLabel1.setText("hi")。这意味着我可以使用返回值直接调用它的函数。
jPanel3.getComponent(0).getName();
qlvxas9a1#
如果我对问题的理解是正确的,你想要这样的东西:
Component c=jPanel3.getComponent(0); if (c instanceof JLabel) ((JLabel)c).setText("hi");
8ehkhllq2#
组件的name属性(即getName()和setName())与您在创建它时曾经使用的变量没有关系。你可以这样做,例如(但不要,因为这是非常混乱的):
name
getName()
setName()
Component textField1 = new JLabel("text"); textField1.setName("comboBox1"); System.out.println(textField1.getName()); // comboBox1
没有办法返回到textField1名称-当您调用getName()方法时,该变量甚至可能不再存在。您甚至可以创建(和使用)组件,而无需为它们使用显式变量,如下所示:
textField1
panel.add(new JLabel("text"));
正如Jon所写的那样,您可以将组件强制转换为真实的类型,并且不需要原始变量的名称。
xj3cbfub3#
当有一个面板作为组件可用时,你可以这样做,它有两个字段,如label和textfields(它可以是textfield和texfield)。
Component[] components = panel.getComponents(); for (Component component : components) { if (component instanceof JPanel) { JPanel subPanel = (JPanel) component; JLabel label = (JLabel) subPanel.getComponent(0); JTextField textField = (JTextField) subPanel.getComponent(1); } }
3条答案
按热度按时间qlvxas9a1#
如果我对问题的理解是正确的,你想要这样的东西:
8ehkhllq2#
组件的
name
属性(即getName()
和setName()
)与您在创建它时曾经使用的变量没有关系。你可以这样做,例如(但不要,因为这是非常混乱的):没有办法返回到
textField1
名称-当您调用getName()
方法时,该变量甚至可能不再存在。您甚至可以创建(和使用)组件,而无需为它们使用显式变量,如下所示:正如Jon所写的那样,您可以将组件强制转换为真实的类型,并且不需要原始变量的名称。
xj3cbfub3#
当有一个面板作为组件可用时,你可以这样做,它有两个字段,如label和textfields(它可以是textfield和texfield)。