在java中输入铸造概念

时间:2018-04-14 04:11:16

标签: java swing casting

我正在使用Swing进行GUI实现。我已将所有组件存储在散列映射中。

Map<String, Component> myMap = new HashMap<String, Component>();

我正在存储JLabel,JButtton,JTextFields和其他一些组件。

以下声明有效:

myMap.get("a_JLabel").setFont(MY_FONT_VARIABLE);

在上面的语句中,map会自动返回JLable类型的对象吗?

但以下JButton无效:

myMap.get("a_JButton").addActionListener(this);

它出现以下错误:

Cannot find symbol - method
addActionListener(NAME_OF_MY_CLASS)

它不会在这里返回JButton类型的对象吗? 如果我将hashmap返回值类型转换为JButton,则它可以工作,如下所示:

JButton a_JButton = (JButton) myMap.get("a_JButton");
a_Jbutton.addActionListener(this);

1 个答案:

答案 0 :(得分:1)

与类型转换无关。

myMap.get("a_JLabel").setFont(MY_FONT_VARIABLE);

上述方案有效,因为setFont()方法存在于抽象类Component中。您可以查看list of methods available in this class

您可以看到抽象类中不存在addActionListener方法。但它存在于子类Button中。所以在这里你需要首先输入它然后使用这个方法