我正在使用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);
答案 0 :(得分:1)
与类型转换无关。
myMap.get("a_JLabel").setFont(MY_FONT_VARIABLE);
上述方案有效,因为setFont()
方法存在于抽象类Component
中。您可以查看list of methods available in this class。
您可以看到抽象类中不存在addActionListener
方法。但它存在于子类Button
中。所以在这里你需要首先输入它然后使用这个方法