1

我是 java 的新手,我已经解析了 XML,现在我必须在各自的JTabbedPane. 我在开始元素方法的属性对象上有错误。

我哪里错了?

import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;  
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class JTabbedPaneDemo extends JPanel {

     /*static String[] nameatt= {" sv_machineData "," Mould_data "," Core_1 "," Core_2 "};*/


    public JTabbedPaneDemo() {
    //  ImageIcon icon = new ImageIcon("java-swing-tutorial.JPG");

        JTabbedPane jtbExample = new JTabbedPane();

        // Create First Tab.
        JPanel jplInnerPanel1 = createInnerPanel();
        jtbExample.addTab(" Sv_Machine_Data ", jplInnerPanel1);
        jplInnerPanel1.setLayout(new BorderLayout());
        JTable table1 = new JTable(5,3);
        JScrollPane tableContainer = new JScrollPane(table1);
        jplInnerPanel1.add(tableContainer,BorderLayout.CENTER);

        //jtbExample.setSelectedIndex(0);

        // Create Second Tab.
        JPanel jplInnerPanel2 = createInnerPanel();
        jtbExample.addTab(" Mould_data ", jplInnerPanel2);
        jplInnerPanel2.setLayout(new BorderLayout());
        JTable table2 = new JTable(5,3);
        JScrollPane tableContainer1 = new JScrollPane(table2);
        jplInnerPanel2.add(tableContainer1,BorderLayout.CENTER);

        // Create Third Tab.
        JPanel jplInnerPanel3 = createInnerPanel();
        jtbExample.addTab(" Core_1 ", jplInnerPanel3);
        jplInnerPanel3.setLayout(new BorderLayout());
        JTable table3 = new JTable(5,3);
        JScrollPane tableContainer3 = new JScrollPane(table3);
        jplInnerPanel3.add(tableContainer3,BorderLayout.CENTER);

        // Create Fourth Tab.
        JPanel jplInnerPanel4 = createInnerPanel();
        jtbExample.addTab(" Core_2 ", jplInnerPanel4);
        jplInnerPanel4.setLayout(new BorderLayout());
        JTable table4 = new JTable(5,3);
        JScrollPane tableContainer4 = new JScrollPane(table4);
        jplInnerPanel4.add(tableContainer4,BorderLayout.CENTER);


        // Add the Tabbed Pane to this panel.
        setLayout(new GridLayout(1, 1));
        add(jtbExample);
    }

    protected JPanel createInnerPanel() {
        JPanel jplPanel = new JPanel();
        JLabel jlbDisplay = new JLabel();
        jlbDisplay.setHorizontalAlignment(JLabel.CENTER);
        jplPanel.setLayout(new GridLayout(1, 1));
        jplPanel.add(jlbDisplay);
        return jplPanel;
    }
    public static void main(String[] args) {
        JFrame frame = new JFrame("TabbedPane Source Demo");
        frame.addWindowListener(new WindowAdapter() {

            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        /*final JTabbedPaneDemo xm = new JTabbedPaneDemo();*/

        try {
            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();

        DefaultHandler handler = new DefaultHandler() {

        boolean bfname = false;
        boolean blname = false;
        String nameAttribute;

        public void startElement(String uri, String localName,String qName, Attributes attributes)
        throws SAXException {

            if (qName.equalsIgnoreCase("TYP")) {
                bfname = true;
                }

            nameAttribute = attributes.getValue("Name");

            if (qName.equalsIgnoreCase("VALUE")){
                blname = true;
                }
        }
        public void characters(char ch[], int start, int length)
        throws SAXException {

            if (bfname) {
                System.out.println("Type : "+ new String(ch, start, length));
                String vtype = new String(ch, start, length);
                /*xm.textArea.append(vtype+"\n");*/
                bfname = false;
                }

            if (nameAttribute != null && !nameAttribute.equals("")) {
                System.out.println("Name : " + nameAttribute);
                /*vname+=nameAttribute+ ", " +"\n";
                xm.textArea_3.setText(vname);
                */}

            if (blname) {   
                String vvalue = new String(ch, start, length);
                System.out.println("Value:" + Double.valueOf(vvalue));
                /*xm.textArea_1.append(Double.valueOf(vvalue)+"\n");*/
                blname = false;
                }
        }
        };

        saxParser.parse(new File("C:"path of xml file".xml"), handler);
        }
        catch (Exception e) {
        e.printStackTrace();
        }
        frame.getContentPane().add(new JTabbedPaneDemo(),BorderLayout.CENTER);
        frame.setSize(400, 500);
        frame.setVisible(true);
    }
}

下面是示例 XML

<?xml version="1.0" encoding="UTF-8"?>
<HMI_Data Version="1.0" MaschinenNR.="XXXXXX" Date="21-10-2009">
   <VarGroup Name="VG_MachineData">
      <Variable Name="Mold1.sv_rMoldStroke">
         <Typ>REAL</Typ>
         <Value>6.000000e+02</Value>
      </Variable>
      <Variable Name="Core1.sv_rMaxSpeedFwd">
         <Typ>REAL</Typ>
         <Value>5.000000e+01</Value>
      </Variable>
      <Variable Name="Core1.sv_rMaxSpeedBwd">
         <Typ>REAL</Typ>
         <Value>5.000000e+01</Value>
      </Variable>
      <Variable Name="Core1.sv_rMaxPressureFwd">
         <Typ>REAL</Typ>
         <Value>1.450000e+02</Value>
      </Variable>
      <Variable Name="Core1.sv_rMaxPressureBwd">
         <Typ>REAL</Typ>
         <Value>1.450000e+02</Value>
      </Variable>
4

1 回答 1

1

JavaDcos 大约 20 秒表明:

import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

应该:

import org.xml.sax.SAXException;
import org.xml.sax.Attributes;  // import it!
import org.xml.sax.helpers.DefaultHandler;
于 2013-05-15T10:38:22.810 回答