我尝试在下面的代码中使用ActionListener
将JButton
添加到XML中的DocumentBuilderfactory
。
我收到错误:Duplicate local variable element
在我在下面发表评论的行。
但是,如果我重命名其中一个变量,那么如何将此actionListener链接到XML中存在的ID按钮?
public static void main (String args[]) throws IOException{
try{
XMLDecoder xmlDecoder = new XMLDecoder(new FileInputStream("ActionListener.xml"));
Object frame = xmlDecoder.readObject();
xmlDecoder.close();
System.out.println("siri");
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("ActionListener.xml"));
Element element = doc.getElementById("Id");
String attrValue = element.getAttribute("string");
JButton element = new JButton("attrValue"); // <-- error happens here
element.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Its a success");
}
});
}
catch(Exception ex){
System.out.println(ex);
}
}
答案 0 :(得分:1)
正如异常所示,您的代码中有一个重复的变量。 这意味着您尝试声明一个与另一个名称完全相同的新变量。
在您的代码中,您有两个名为element
的变量:
Element element = doc.getElementById("Id");
JButton element = new JButton("attrValue");
重命名其中一个以解决您的问题。
接下来,你的代码的这部分看起来很阴暗:
Element element = doc.getElementById("Id");
String attrValue = element.getAttribute("string");
JButton button = new JButton("attrValue"); //Note I changed the variable name
从不使用变量attrValue
字符串值,因为您将常量字符串值“attrValue”设置为JButton标签。
你可能想写:
JButton button = new JButton(attrValue);
另外,您创建了一个全新的JButton并添加了一个actionListener,但它没有显示,因为您从未将其添加到视图中。