在JAVA-JESS中创建树

在JAVA-JESS中创建树,java,jess,Java,Jess,我一直在尝试用JAVA-JESS制作一棵树,但我对JESS的了解非常有限。由于我在编程方面做得不够好,我从不同的网站获得了帮助,并尝试用JAVA编写程序。有谁能帮我用JASS语言用JAVA编写程序吗?谢谢 import javax.swing.JButton; import javax.swing.JEditorPane; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JPanel;

我一直在尝试用JAVA-JESS制作一棵树,但我对JESS的了解非常有限。由于我在编程方面做得不够好,我从不同的网站获得了帮助,并尝试用JAVA编写程序。有谁能帮我用JASS语言用JAVA编写程序吗?谢谢

import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeSelectionModel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.filechooser.FileNameExtensionFilter;

import java.net.URL;
import java.util.Collection;
import java.util.Iterator;
import java.io.File;
import java.io.IOException;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TreeView extends JPanel implements ActionListener {
    private JTree tree;
    JButton openButton, saveButton;
    JFileChooser fc;

    // Optionally set the look and feel.
    private static boolean useSystemLookAndFeel = false;

    public TreeView() {
        super(new GridLayout(1, 1));

        // Create a tree that allows one selection at a time.
        tree = new JTree();
        tree.getSelectionModel().setSelectionMode(
                TreeSelectionModel.SINGLE_TREE_SELECTION);

        // Create the scroll pane and add the tree to it.
        JScrollPane treeView = new JScrollPane(tree);

        add(treeView, BorderLayout.LINE_START);

        Dimension minimumSize = new Dimension(10, 0);
        treeView.setMinimumSize(minimumSize);

        fc = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("xml",
                "XML");
        fc.setFileFilter(filter);
        openButton = new JButton("Open a File");
        openButton.addActionListener(this);

        // For layout purposes, put the buttons in a separate panel
        JPanel buttonPanel = new JPanel(); // use FlowLayout
        openButton.setPreferredSize(new Dimension(1, 1));

        // Add the buttons and the log to this panel.
        add(openButton, BorderLayout.LINE_END);
    }

    public void actionPerformed(ActionEvent e) {
        // Handle open button action.
        if (e.getSource() == openButton) {
            int returnVal = fc.showOpenDialog(TreeView.this);

            if (returnVal == JFileChooser.APPROVE_OPTION) {
                regenerateTree(fc.getSelectedFile());
            }

            // Handle save button action.
        } else if (e.getSource() == saveButton) {
            int returnVal = fc.showSaveDialog(TreeView.this);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fc.getSelectedFile();
            }
        }
    }

    private void regenerateTree(File file) {
        DistributionSystem ds = DSParser.parse(file);
        // Create the nodes.
        DefaultMutableTreeNode top = new DefaultMutableTreeNode(file.getName());
        createNodes(top, ds);
    }

    private void createNodes(DefaultMutableTreeNode top, DistributionSystem ds) {
        DefaultMutableTreeNode category = null;

        category = new DefaultMutableTreeNode("Voltage Levels");
        top.add(category);

        Collection<VoltageLevel> voltages = ds.getVoltages().values();
        for (Iterator iterator = voltages.iterator(); iterator.hasNext();) {
            // voltage levels
            VoltageLevel vl = (VoltageLevel) iterator.next();
            DefaultMutableTreeNode voltageLevel = new DefaultMutableTreeNode(
                    vl.getId());
            category.add(voltageLevel);

            // workstations
            Collection<Workstation> workstations = vl.getWorkstations();
            for (Iterator iterator2 = workstations.iterator(); iterator2
                    .hasNext();) {
                Workstation w = (Workstation) iterator2.next();

                DefaultMutableTreeNode workstationNode = new DefaultMutableTreeNode(
                        w.getId());
                voltageLevel.add(workstationNode);

                // bays
                Collection<Bay> bays = w.getBays();
                for (Iterator iterator3 = bays.iterator(); iterator3.hasNext();) {
                    Bay bay = (Bay) iterator3.next();

                    DefaultMutableTreeNode bayNode = new DefaultMutableTreeNode(
                            bay.getId());
                    workstationNode.add(bayNode);

                    // Bay Info
                    bayNode.add(new DefaultMutableTreeNode(bay
                            .getVoltageTransformer()));
                    bayNode.add(new DefaultMutableTreeNode(bay
                            .getCurrentTransformer()));

                }
            }

        }
        this.tree.setModel(new JTree(top).getModel());
    }

    /**
     * Create the GUI and show it. For thread safety, this method should be
     * invoked from the event dispatch thread.
     */
    private static void createAndShowGUI() {
        if (useSystemLookAndFeel) {
            try {
                UIManager.setLookAndFeel(UIManager
                        .getSystemLookAndFeelClassName());
            } catch (Exception e) {
                System.err.println("Couldn't use system look and feel.");
            }
        }

        // Create and set up the window.
        JFrame frame = new JFrame("Network visualization");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Add content to the window.
        frame.add(new TreeView());

        // Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        // Schedule a job for the event dispatch thread:
        // creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}
import javax.swing.JButton;
导入javax.swing.JEditorPane;
导入javax.swing.JFileChooser;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JScrollPane;
导入javax.swing.JSplitPane;
导入javax.swing.JTextArea;
导入javax.swing.UIManager;
导入javax.swing.JTree;
导入javax.swing.tree.DefaultMutableTreeNode;
导入javax.swing.tree.TreeModel;
导入javax.swing.tree.TreeSelectionModel;
导入javax.swing.event.TreeSelectionEvent;
导入javax.swing.event.TreeSelectionListener;
导入javax.swing.filechooser.FileNameExtensionFilter;
导入java.net.URL;
导入java.util.Collection;
导入java.util.Iterator;
导入java.io.File;
导入java.io.IOException;
导入java.awt.BorderLayout;
导入java.awt.Dimension;
导入java.awt.GridLayout;
导入java.awt.Insets;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
公共类TreeView扩展JPanel实现ActionListener{
私有JTree树;
JButton openButton、saveButton;
JFileChooser fc;
//可以选择设置外观。
私有静态布尔useSystemLookAndFeel=false;
公共树视图(){
超级(新网格布局(1,1));
//创建一个允许一次选择一个选项的树。
tree=newjtree();
tree.getSelectionModel().setSelectionMode(
树选择模型(单树选择);
//创建滚动窗格并将树添加到其中。
JScrollPane treeView=新的JScrollPane(树);
添加(树状视图、边框布局、行\起点);
尺寸最小尺寸=新尺寸(10,0);
treeView.setMinimumSize(minimumSize);
fc=新的JFileChooser();
FileNameExtensionFilter=新FileNameExtensionFilter(“xml”,
“XML”);
fc.设置文件过滤器(过滤器);
openButton=newjbutton(“打开文件”);
openButton.addActionListener(这个);
//为了便于布局,请将按钮放在单独的面板中
JPanel buttonPanel=new JPanel();//使用FlowLayout
openButton.setPreferredSize(新维度(1,1));
//将按钮和日志添加到此面板。
添加(openButton,BorderLayout.LINE_END);
}
已执行的公共无效操作(操作事件e){
//处理打开按钮动作。
如果(例如getSource()==openButton){
int returnVal=fc.showOpenDialog(TreeView.this);
if(returnVal==JFileChooser.APPROVE_选项){
重新生成树(fc.getSelectedFile());
}
//处理保存按钮操作。
}else if(例如getSource()==saveButton){
int returnVal=fc.showsavedilog(TreeView.this);
if(returnVal==JFileChooser.APPROVE_选项){
File File=fc.getSelectedFile();
}
}
}
私有void树(文件){
DistributionSystem ds=DSParser.parse(文件);
//创建节点。
DefaultMutableTreeNode top=新的DefaultMutableTreeNode(file.getName());
创建节点(顶部,ds);
}
私有void createNodes(DefaultMutableTreeNode顶部,DistributionSystem ds){
DefaultMutableTreeNode类别=空;
类别=新的默认可变树节点(“电压电平”);
添加(类别);
采集电压=ds.getVoltages().values();
for(Iterator Iterator=voltages.Iterator();Iterator.hasNext();){
//电压电平
VoltageLevel vl=(VoltageLevel)迭代器.next();
DefaultMutableTreeNode电压等级=新的DefaultMutableTreeNode(
vl.getId());
类别。添加(电压等级);
//工作站
采集工作站=vl.getWorkstations();
for(迭代器迭代器2=工作站。迭代器();迭代器2
.hasNext();){
工作站w=(工作站)迭代器2.next();
DefaultMutableTreeNode workstationNode=新的DefaultMutableTreeNode(
w、 getId());
添加(workstationNode);
//海湾
收集间隔=w.getBays();
for(迭代器迭代器3=bays.Iterator();迭代器3.hasNext();){
Bay=(Bay)迭代器3.next();
DefaultMutableTreeNode bayNode=新的DefaultMutableTreeNode(
bay.getId());
workstationNode.add(bayNode);
//海湾信息
添加(新的DefaultMutableTreeNode(bay
.getVoltageTransformer());
添加(新的DefaultMutableTreeNode(bay
.getCurrentTransformer());
}
}
}
this.tree.setModel(新的JTree(top.getModel());
}
/**
*创建GUI并显示它。为了线程安全,应该
*从事件分派线程调用。
*/
私有静态void createAndShowGUI(){
如果(使用SystemLookandFeel){
试一试{
UIManager.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());
}捕获(例外e){
System.err.println(“无法使用系统外观”);
}
}
//创建并设置窗口。
JFrame=新JFrame(“网络可视化”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//向窗口添加内容。
frame.add(newtreeview());
//显示窗口。
frame.pack();
frame.setVisible(true);
}
公共静态无效