新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论DOM, SAX, XPath等。
    [返回] 计算机科学论坛XML.ORG.CN讨论区 - XML技术『 DOM/SAX/XPath 』 → Java&XML解析画表问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 2759 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: Java&XML解析画表问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     rocker 帅哥哟,离线,有人找我吗?白羊座1983-3-29
      
      
      等级:大二期末(Java考了96分!)
      文章:33
      积分:302
      门派:XML.ORG.CN
      注册:2005/3/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocker发送一个短消息 把rocker加入好友 查看rocker的个人资料 搜索rocker在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocker的博客楼主
    发贴心情 Java&XML解析画表问题

    1.XMLPainter.java文件
    import java.awt.*;
    import javax.swing.*;
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import org.xml.sax.helpers.*;
    import java.io.*;
    import org.w3c.dom.*;

    public class XMLPainter extends JTextArea
    {
     String parsedFile; 
     int WIDTH=80,HEIGTH=60;
     int r,c;
     static Document parsedDocument;    
     public void paintComponent(Graphics g)
     {  
      super.paintComponent(g);
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      try
      {
       /*解析器属性设置*/
       
       dbf.setValidating(true);//解析器解析XML文件时对其进行验证

       dbf.setIgnoringComments(true);//忽略注释
       
       dbf.setIgnoringElementContentWhitespace(true);//忽略空白
          
       dbf.setNamespaceAware(true);//使解析器理解命名空间
       
       dbf.setExpandEntityReferences(true);//展开实体引用节点
       
       /*解析器属性设置*/
      
       DocumentBuilder db=dbf.newDocumentBuilder();   
       
       /*解析文件*/
       //System.out.println("XMLParser"); 
       parsedDocument = db.parse(new File("table.xml"));
       //System.out.println("XMLParserlast");  
      }
      catch(SAXException se)
      {
       Exception e = se;
       if(se.getException()!=null)
       {
        e = se.getException();
        e.printStackTrace();    
       }
      }
      catch(ParserConfigurationException pce)
      {
       pce.printStackTrace();
      }
      
      catch(IOException ie)
      {
       ie.printStackTrace();   
      } 
      catch(Exception e)
      {
       System.err.println(e.toString());
      }  
      try
      {    
       //System.out.println("paintComponentlast");
       Node root = parsedDocument.getDocumentElement();
       
       NodeList nodes = root.getChildNodes();   
       for(r=1;r<=nodes.getLength();r++)
       {    
        if(nodes.item(r-1).hasChildNodes())
        {
         NodeList childs = nodes.item(r-1).getChildNodes();
         for(c=1;c<=childs.getLength();c++)
         {
          int type = childs.item(c-1).getNodeType();
          if(type == Node.ELEMENT_NODE)
          {
           g.drawLine((c-1)*WIDTH,(r-1)*HEIGTH,(c-1)*WIDTH,r*HEIGTH);
           g.drawLine((c-1)*WIDTH,(r-1)*HEIGTH,c*WIDTH,(r-1)*HEIGTH);
           g.drawString(childs.item(c-1).getFirstChild().getNodeValue(),(c-1)*WIDTH,(r-1)*HEIGTH);
          }
         }
        }
       }
       g.drawLine(0,r*HEIGTH,c*WIDTH,r*HEIGTH);
       g.drawLine(c*WIDTH,0,c*WIDTH,r*HEIGTH);
         
      }
         catch(Exception e)
         {
          //System.err.println(e.toString());
         }

     }
     public void draw(String tableToDraw)
     {  
      parsedFile = tableToDraw;
      System.out.println("draw");
      //repaint();  
      
      
     }
    }

    2.UserGUI.java文件
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;


    public class UserGUI extends JApplet implements ActionListener
    {  
     JButton printButton,previewButton,pagesetButton;
     JPanel buttonPanel;
     XMLPainter customPanel;
     //ParsePainter testPanel; 
     Container container = getContentPane();
     JScrollPane scroll;
        
     public void init()
     {//

       
      printButton = new JButton("打印");
      printButton.addActionListener(this);  
      
      previewButton = new JButton("打印预览");
      previewButton.addActionListener(this);     
      
      pagesetButton = new JButton("页面设置");
      pagesetButton.addActionListener(this);  
      
      buttonPanel = new JPanel();
      buttonPanel.setBackground(Color.white);
      
      customPanel = new XMLPainter();
      customPanel.setBackground(Color.white);  
      customPanel.draw("table.xml");
      
      scroll = new JScrollPane(customPanel); 
      
      
      buttonPanel.add(printButton);
      buttonPanel.add(previewButton);
      buttonPanel.add(pagesetButton); 
      
      container.add(buttonPanel,BorderLayout.SOUTH);
      container.add(scroll,BorderLayout.CENTER);
       
      //setSize(800,600);
      
      
        
      
      
     } 
     
     public void actionPerformed(ActionEvent evt)
        {//
            Object src = evt.getSource();
            if (src == printButton)
                printAction();
            else if (src == previewButton)
                previewAction();    
            else if (src == pagesetButton)
                pagesetAction();         
        }
     
     private void printAction()
     {//  
      JOptionPane.showConfirmDialog(null, "对不起!! 打印内容不能为空,打印已取消", "内容不能为空",JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE);
     } 
     
     private void previewAction()
     {
      JOptionPane.showMessageDialog(null,"完善中","完善中",JOptionPane.CLOSED_OPTION);

      //printButton.setLabel(pagesetButton.getLabel());
     }
     private void pagesetAction()
     {
      //JOptionPane.showMessageDialog(null,"完善中","完善中",JOptionPane.CLOSED_OPTION);
      //pagesetButton.setLabel(previewButton.getLabel());
     } 
     
    }


    程序一到解析就不能运行了 捕捉异常抛出个accesscontrolexception异常 请高手指点


    [此贴子已经被作者于2005-6-4 14:17:26编辑过]

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/2 13:49:00
     
     rocker 帅哥哟,离线,有人找我吗?白羊座1983-3-29
      
      
      等级:大二期末(Java考了96分!)
      文章:33
      积分:302
      门派:XML.ORG.CN
      注册:2005/3/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给rocker发送一个短消息 把rocker加入好友 查看rocker的个人资料 搜索rocker在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看rocker的博客2
    发贴心情 
    都两天了 怎么没一个人吭声啊
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/6/4 14:11:00
     
     GoogleAdSense白羊座1983-3-29
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DOM/SAX/XPath 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/7/18 17:31:46

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    46.875ms