在JAVA-JESS中创建树
我一直在尝试用JAVA-JESS制作一棵树,但我对JESS的了解非常有限。由于我在编程方面做得不够好,我从不同的网站获得了帮助,并尝试用JAVA编写程序。有谁能帮我用JASS语言用JAVA编写程序吗?谢谢在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;
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);
}
公共静态无效