java 获取组件_java – 按名称获取一个Swing组件

我知道这是一个古老的问题,但我发现自己刚才问了.我想要一个简单的方法来获取组件的名称,所以我不必每次编写一些卷积的代码来访问不同的组件.例如,让JButton访问文本字段中的文本或列表中的选择.

最简单的解决方案是使所有组件变量都是类变量,以便您可以随时访问它们.然而,并不是每个人都希望这样做,而有些(像我自己)使用的GUI编辑器不会将这些组件作为类变量生成.

我的解决方案很简单,我想想,并不真正违反任何编程标准,据我所知(参考什么fortran得到).它允许以名称访问组件的简单直接的方式.

>创建Map类变量.您将需要导入HashMap

非常少.为了简单起见,我命名为mine componentMap.

private HashMap componentMap;

>将所有组件添加到正常的框架中.

initialize() {

//add your components and be sure

//to name them.

...

//after adding all the components,

//call this method we're about to create.

createComponentMap();

}

>在你的类中定义以下两个方法.如果您还没有,则需要导入组件:

private void createComponentMap() {

componentMap = new HashMap();

Component[] components = yourForm.getContentPane().getComponents();

for (int i=0; i < components.length; i++) {

componentMap.put(components[i].getName(), components[i]);

}

}

public Component getComponentByName(String name) {

if (componentMap.containsKey(name)) {

return (Component) componentMap.get(name);

}

else return null;

}

>现在,您已经有一个HashMap,将您的框架/内容窗格/面板/ etc中的所有当前存在的组件映射到各自的名称.

>要现在访问这些组件,就像调用getComponentByName(String name)一样简单.如果具有该名称的组件存在,它将返回该组件.如果没有,则返回null.将组件投入正确的类型是您的责任.我建议使用instanceof来确定.

如果您计划在运行时任何时候添加,删除或重命名组件,我将考虑添加根据您的更改修改HashMap的方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值