首页 文章

标签不是动态创建的

提问于
浏览
-3

http://ibb.co/hvrdbR private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){
//删除现有面板String xmldoc = "./src/com/ui/Data.xml";试试{JLabel label2 = new JLabel();
文件fXmlFile = new File(xmldoc); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); doc.getDocumentElement()正常化(); NodeList nList = doc.getElementsByTagName("username"); for(int temp = 0; temp <nList.getLength(); temp){Node nNode = nList.item(temp); if(nNode.getNodeType()== Node.ELEMENT_NODE){Element eElement =(Element)nNode; String text = eElement.getTextContent();的System.out.println(文本);
jPanel7.setBackground(Color.WHITE); jPanel7.setLayout(new FlowLayout()); jPanel7.add(LABEL2); label2.setText(文本); label2.setPreferredSize(new Dimension(100,40)); label2.setFont(new Font("Times New Roman",Font.BOLD,24));
}}}
catch(Exception ex){System.out.println("Database exception : userExists()"); }}

仅创建标签并粘贴所有用户名

1 回答

  • 0

    在循环的每次迭代中, jPanel7.add(label2) 被调用一次 . 但是,您反复使用相同的 JLabel 实例 .

    会发生什么?

    JPanel.add(Component)java.awt.Container.add(Component) 中定义,其中委托给java.awt.Container.addImpl(Component, Object, int) . 并在代码中:

    /* Reparent the component and tidy up the tree's state. */
     if (comp.parent != null) {
          comp.parent.remove(comp);
          if (index > component.size()) {
               throw new IllegalArgumentException("illegal component position");
          }
     }
     // ...
     comp.parent = this;
    

    试图将 Component 添加到已经包含此 ComponentContainer 将导致在实践中不会发生任何事情 . 因此,最后,您的 jPanel7 只有一个孩子-- label2 .

    什么是正确的做法?

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String xmldoc="./src/com/ui/Data.xml";
        try {
            // background and layout should be set only once
            jPanel7.setBackground(Color.WHITE);
            jPanel7.setLayout(new FlowLayout());
    
            File fXmlFile = new File(xmldoc);
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);
            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("username");
    
            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    String text = eElement.getTextContent();
                    System.out.println(text);
    
                    JLabel label2 = new JLabel(text);  // create a new JLabel with the given text
                    // set label2's attributes
                    label2.setPreferredSize(new Dimension(100,40));
                    label2.setFont(new Font("Times New Roman", Font.BOLD, 24)); 
    
                    jPanel7.add(label2);  // add it to jPanel7
                } 
            }
        } catch (Exception ex) {
            System.out.println("Database exception : userExists()");
        }
    }
    

相关问题