获取 JPanel 中组件的类型

Posted

技术标签:

【中文标题】获取 JPanel 中组件的类型【英文标题】:get type of a component in a JPanel 【发布时间】:2014-01-28 13:13:17 【问题描述】:

我有一个迭代 jPanel 中所有组件的 foreach 循环,我想获取组件的类型并检查它是否是 JRadioButton。

这是我尝试过的代码:

 for (Component c : ((Container)jPanel1).getComponents() )
 
     if(((JRadioButton)c).isSelected() && c.getComponentType()) 
         if(!listrep.contains(((JRadioButton)c).getText())) 
             ((JRadioButton)c).setForeground(new java.awt.Color(204, 0, 0));;
         
     
 

但它不会起作用。

我该怎么做?

【问题讨论】:

如需尽快获得更好的帮助,请发帖MCVE。 @AndrewThompson:啊,一个 MCVE,对我来说是一个新的,感谢您显示此链接! 【参考方案1】:

您可以使用 instanceof 运算符,但这会给您的代码一个bad code smell,就像您的整个计划一样。最好将感兴趣的组件放入 ArrayList 以供参考。

或者更好的是,直接从用于将它们绑定在一起的 ButtonGroup 中获取选定的 JRadioButton 的 ButtonModel。

ButtonModel selectedModel = buttonGroup.getSelection();
if (selectedModel != null) 
 // use the selected button's model here

【讨论】:

喜欢该链接中的引用。【参考方案2】:
for (Component c : jpanel1.getComponents()) 
            if (c instanceof JRadioButton) 
                //Do what you need to do, if you need to call JRadioButton methods
                //you will need to cast c to a JRadioButton first
            

【讨论】:

以上是关于获取 JPanel 中组件的类型的主要内容,如果未能解决你的问题,请参考以下文章

从动态添加的 jPanel 中获取文本

如何从 Jpanel 中的 JTextField 获取值并将其发送到其他 JPanel?

在 JPanel.getComponents() 中循环时如何获取 JButton 属性

获取 Swing 组件的默认背景颜色

如何获取JPanel中某个点的颜色? [关闭]

我自己的组件中的一个面板中有两个不同的按钮