import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.tree.*;
import com.borland.jbcl.layout.*;
import java.io.BufferedReader;
import SuperEditor.BNF.*;
import SuperEditor.BNF.Common.ConstDefine;
import java.io.FileReader;
import java.util.*;
public class MTree
{
private JTree tagTree = new JTree();
private JPopupMenu treeMenu = new JPopupMenu();
private FrameMain frameMain;
private Node mProjectNode;
private Node mTemplateNode;
private String oldNodeName;
private String txtFilePath;
private boolean addMenuItemClick = false;
private boolean alertMenuItemClick = false;
private LinkedList mFileName = null; public MTree(Node templateNode, Node prjNode, FrameMain frame, String filePath,LinkedList fileName) {
mTemplateNode = templateNode;
mProjectNode = prjNode;
frameMain = frame;
txtFilePath = filePath;
mFileName = fileName;
createRootNode();
} public JTree getTree() {
return tagTree;
} public void createRootNode() {
try{
for(int loop=0; loop<mFileName.size(); loop++) {
String text = readFile(txtFilePath + (String)mFileName.get(loop)+".txt");
mProjectNode.arrDecompose((String)mFileName.get(loop),text,mTemplateNode);
}
}
catch(Exception e){
System.out.println(e.getMessage());
}
mProjectNode.setName(ConstDefine.DefaultProjectName);
if(ConstDefine.Debug_Mode)
mProjectNode.print_it();
} public boolean createTree()
{
if(mProjectNode == null)
return false;
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("プロジェクト");
LinkedList lst1=mProjectNode.getList(); if(lst1 != null)
{
for (int loop = 0; loop < lst1.size(); loop++)
{
Node snode = (Node) lst1.get(loop);
if(snode != null)
mTreeAddNode(rootNode, snode);
}
}
tagTree.setModel(new DefaultTreeModel(rootNode));
cteateMenu();//マウス右キのイベントの追加
tagTree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent evt)
{
String selectionNodePath = null;
if(evt.getModifiers() == Event.META_MASK)
{
TreePath selectionPath = tagTree.getSelectionPath();
if(selectionPath != null)
{
int length = selectionPath.toString().split(",").length;
if (length >= 2) {
treeMenu.show(tagTree, evt.getX(), evt.getY());
}
}
}
}
});
return true;
} public void mTreeAddNode(DefaultMutableTreeNode rootNode,Node treenode)
{
DefaultMutableTreeNode cNode = new DefaultMutableTreeNode(treenode.getName());
rootNode.add(cNode);
LinkedList lst1 = treenode.getList(); if(lst1 != null)
{
for(int loop = 0; loop < lst1.size(); loop++)
{
Node snode = (Node) lst1.get(loop);
if(snode != null)
this.treeAddNode(cNode, snode);
}
}
} private void treeAddNode(DefaultMutableTreeNode rootNode,Node treenode)
{
DefaultMutableTreeNode cNode=null;
if(rootNode.toString().equals(""))
cNode=rootNode;
else
{
String name = treenode.getName();
if (name == null || name.equals(""))
name = "unknown";
cNode = new DefaultMutableTreeNode(name);
rootNode.add(cNode);
}
LinkedList lst1=treenode.getList(); if(lst1 != null)
{
for(int loop = 0; loop < lst1.size(); loop++)
{
Node snode = (Node) lst1.get(loop);
if(snode != null)
this.treeAddNode(cNode, snode);
}
}
} private void cteateMenu()
{
treeMenu = new JPopupMenu();
JMenuItem menuItemAdd = new JMenuItem();
menuItemAdd.setText("追加");
JMenuItem menuItemRemove = new JMenuItem();
menuItemRemove.setText("削除");
JMenuItem menuItemAlertName = new JMenuItem();
menuItemAlertName.setText("名前の変更");
treeMenu.add(menuItemAdd);
treeMenu.add(menuItemRemove);
treeMenu.add(menuItemAlertName); menuItemAdd.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
addMenuItemClick = true;
addNode();
}
}); menuItemRemove.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{ removeNode();
}
}); menuItemAlertName.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
alertMenuItemClick = true;
alertNodeName();
}
});
}
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.tree.*;
import com.borland.jbcl.layout.*;
import java.io.BufferedReader;
import SuperEditor.BNF.*;
import SuperEditor.BNF.Common.ConstDefine;
import java.io.FileReader;
import java.util.*;
public class MTree
{
private JTree tagTree = new JTree();
private JPopupMenu treeMenu = new JPopupMenu();
private FrameMain frameMain;
private Node mProjectNode;
private Node mTemplateNode;
private String oldNodeName;
private String txtFilePath;
private boolean addMenuItemClick = false;
private boolean alertMenuItemClick = false;
private LinkedList mFileName = null; public MTree(Node templateNode, Node prjNode, FrameMain frame, String filePath,LinkedList fileName) {
mTemplateNode = templateNode;
mProjectNode = prjNode;
frameMain = frame;
txtFilePath = filePath;
mFileName = fileName;
createRootNode();
} public JTree getTree() {
return tagTree;
} public void createRootNode() {
try{
for(int loop=0; loop<mFileName.size(); loop++) {
String text = readFile(txtFilePath + (String)mFileName.get(loop)+".txt");
mProjectNode.arrDecompose((String)mFileName.get(loop),text,mTemplateNode);
}
}
catch(Exception e){
System.out.println(e.getMessage());
}
mProjectNode.setName(ConstDefine.DefaultProjectName);
if(ConstDefine.Debug_Mode)
mProjectNode.print_it();
} public boolean createTree()
{
if(mProjectNode == null)
return false;
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("プロジェクト");
LinkedList lst1=mProjectNode.getList(); if(lst1 != null)
{
for (int loop = 0; loop < lst1.size(); loop++)
{
Node snode = (Node) lst1.get(loop);
if(snode != null)
mTreeAddNode(rootNode, snode);
}
}
tagTree.setModel(new DefaultTreeModel(rootNode));
cteateMenu();//マウス右キのイベントの追加
tagTree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent evt)
{
String selectionNodePath = null;
if(evt.getModifiers() == Event.META_MASK)
{
TreePath selectionPath = tagTree.getSelectionPath();
if(selectionPath != null)
{
int length = selectionPath.toString().split(",").length;
if (length >= 2) {
treeMenu.show(tagTree, evt.getX(), evt.getY());
}
}
}
}
});
return true;
} public void mTreeAddNode(DefaultMutableTreeNode rootNode,Node treenode)
{
DefaultMutableTreeNode cNode = new DefaultMutableTreeNode(treenode.getName());
rootNode.add(cNode);
LinkedList lst1 = treenode.getList(); if(lst1 != null)
{
for(int loop = 0; loop < lst1.size(); loop++)
{
Node snode = (Node) lst1.get(loop);
if(snode != null)
this.treeAddNode(cNode, snode);
}
}
} private void treeAddNode(DefaultMutableTreeNode rootNode,Node treenode)
{
DefaultMutableTreeNode cNode=null;
if(rootNode.toString().equals(""))
cNode=rootNode;
else
{
String name = treenode.getName();
if (name == null || name.equals(""))
name = "unknown";
cNode = new DefaultMutableTreeNode(name);
rootNode.add(cNode);
}
LinkedList lst1=treenode.getList(); if(lst1 != null)
{
for(int loop = 0; loop < lst1.size(); loop++)
{
Node snode = (Node) lst1.get(loop);
if(snode != null)
this.treeAddNode(cNode, snode);
}
}
} private void cteateMenu()
{
treeMenu = new JPopupMenu();
JMenuItem menuItemAdd = new JMenuItem();
menuItemAdd.setText("追加");
JMenuItem menuItemRemove = new JMenuItem();
menuItemRemove.setText("削除");
JMenuItem menuItemAlertName = new JMenuItem();
menuItemAlertName.setText("名前の変更");
treeMenu.add(menuItemAdd);
treeMenu.add(menuItemRemove);
treeMenu.add(menuItemAlertName); menuItemAdd.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
addMenuItemClick = true;
addNode();
}
}); menuItemRemove.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{ removeNode();
}
}); menuItemAlertName.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
alertMenuItemClick = true;
alertNodeName();
}
});
}
解决方案 »
- Java中getResourceAsStream的用法
- list取值问题
- 如何在jsp中获取document.execCommand('SaveAs')的保存路径
- 连接数据库的问题急 急 急
- 一个特殊字符转义的问题 大家帮帮忙
- itbase中的sql语句可以放上2条语句吗
- 我用java把网页的源代码下载下来,写入文本文件为什么是乱码,参阅如下代码:
- 紧急求救:小弟有一框架页,分上左右页面,在右页中用了个session.invalidate()后,想让整个框架刷新一遍,不知怎么做??
- 麻烦大家,是关于java中Serializable(序列化)的问题?急...在线等待!
- to bj100(火火火) :文章收到,进来领分!
- 请指教怎么很容易的得到网站的访问量是多少阿?
- 大家谁知道tomcalt5.0的server.xml文件里为什么没有context这个元素,从而导致我无法更改属性reloadble
{
String strMessage = "アイテムを追加するか";
String title = "アイテムの追加";
int btnTag = JOptionPane.showConfirmDialog(null, strMessage, title,
JOptionPane.ERROR_MESSAGE);
if(btnTag == JOptionPane.YES_OPTION)
{
DefaultMutableTreeNode childNode = new DefaultMutableTreeNode("new node");
DefaultTreeModel model = (DefaultTreeModel)tagTree.getModel();
DefaultMutableTreeNode chosenNode = (DefaultMutableTreeNode) tagTree.getLastSelectedPathComponent();
if (chosenNode != null) {
model.insertNodeInto(childNode, chosenNode, 0);
if(!tagTree.isExpanded(tagTree.getSelectionPath()))
tagTree.expandPath(tagTree.getSelectionPath());
}
tagTree.setEditable(true);
tagTree.setSelectionRow(tagTree.getSelectionRows()[0] + 1);
tagTree.startEditingAtPath(tagTree.getSelectionPath());
/* マウスのイベントの追加。ノードの編集状態を取り消す */
tagTree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent evt)
{
if(tagTree.isEditable() && tagTree.isEditing() && addMenuItemClick)
{
String alertName = (String)tagTree.getCellEditor().getCellEditorValue();
TreePath editingNodePath = tagTree.getEditingPath();
((DefaultTreeModel)tagTree.getModel()).valueForPathChanged(editingNodePath,alertName);
String path = tagTree.getEditingPath().toString();
String pathBuffer[] = path.split(",");
int length = pathBuffer.length;
pathBuffer[length-1] = pathBuffer[length-1].substring(0,pathBuffer[length-1].length()-1);
LinkedList pathList = new LinkedList();
pathList.add(ConstDefine.DefaultProjectName); for(int index=1; index<pathBuffer.length; index++)
{
pathList.add(pathBuffer[index].trim()); } mProjectNode.cloneNode(pathList,mTemplateNode);
if(ConstDefine.Debug_Mode)
mProjectNode.print_it();
tagTree.setEditable(false);
addMenuItemClick = false;
frameMain.createTree();
}
}
});
}
else
return;
} private void removeNode()
{
String strMessage = "アイテムを削除するか";
String title = "アイテムの削除";
LinkedList removedNodePath = getSelectedNodePath();
String removedNodeName = (String)removedNodePath.getLast();
int btnTag = JOptionPane.showConfirmDialog(null, strMessage, title,
JOptionPane.ERROR_MESSAGE);
if(btnTag == JOptionPane.YES_OPTION)
{
DefaultTreeModel model = (DefaultTreeModel) tagTree.getModel();
DefaultMutableTreeNode chosenNode = (DefaultMutableTreeNode) tagTree.
getLastSelectedPathComponent();
if(chosenNode != null)
{
//treeからノードを削除する
model.removeNodeFromParent(chosenNode);
//ArrayNodeからノードを削除する
mProjectNode.delNode(removedNodePath,removedNodeName);
}
}
else
return;
} private void alertNodeName()
{
tagTree.setEditable(true);
DefaultTreeModel model = (DefaultTreeModel)tagTree.getModel();
DefaultMutableTreeNode chosenNode = (DefaultMutableTreeNode)tagTree.getLastSelectedPathComponent();
oldNodeName = (String)getSelectedNodePath().getLast();
tagTree.startEditingAtPath(tagTree.getSelectionPath());
tagTree.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent evt)
{
if(tagTree.isEditable() && tagTree.isEditing() && alertMenuItemClick)
{
String newName = (String)tagTree.getCellEditor().getCellEditorValue();
TreePath editingNodePath = tagTree.getEditingPath();
((DefaultTreeModel)tagTree.getModel()).valueForPathChanged(editingNodePath, newName);
String path = tagTree.getEditingPath().toString();
String pathBuffer[] = path.split(",");
pathBuffer[0] = pathBuffer[0].substring(1,pathBuffer[0].length());
LinkedList pathList = new LinkedList();
for(int index = 0; index<pathBuffer.length-1; index++) {
pathList.add(pathBuffer[index].trim());
}
pathList.add(oldNodeName);
mProjectNode.replaceNodeName(pathList, newName);
alertMenuItemClick = false;
tagTree.setEditable(false);
}
}
});
} public LinkedList getSelectedNodePath()
{
LinkedList pathList = new LinkedList();
TreePath path = tagTree.getSelectionPath();
if (path == null)
return null;
String selectionNodePath = path.toString();
String pathBuffer[] = selectionNodePath.split(",");
pathBuffer[0] = pathBuffer[0].substring(1,pathBuffer[0].length());
if(pathBuffer.length <= 1)
return pathList; for(int index = 0; index < pathBuffer.length; index++)
{
String nodeName = null;
if(index == pathBuffer.length-1)
nodeName = pathBuffer[index].substring(0,pathBuffer[index].length() - 1);
else
nodeName = pathBuffer[index];
pathList.add(nodeName.trim());
}
return pathList;
} public LinkedList getSelectedNodeAssign()
{
LinkedList pathList = getSelectedNodePath();
if(pathList == null)
return null;
pathList.removeFirst();
LinkedList assList = mProjectNode.getAssign(pathList);
return assList;
} public String getNodeExpression()
{
LinkedList pathList = getSelectedNodePath();
if(pathList == null)
return null;
if(pathList.size()!=0)
pathList.removeFirst(); String expression = mProjectNode.getExpression(0, pathList);
return expression;
} public String readFile(String fileName)
{
StringBuffer buffer= new StringBuffer();
try{
File file = new File(fileName);
if(file.exists())
{
String str;
BufferedReader inBuffer = new BufferedReader(new FileReader(file));
LineNumberReader lines = new LineNumberReader(new StringReader(buffer.toString()));
int lineNumber = 0;
while((str = inBuffer.readLine()) != null)
{
if (str.indexOf("#")!=0 && str.compareTo("")!=0)
{
str = repalceString(str);
buffer.append(str).append("\n");
lineNumber = lines.getLineNumber();
}
}
inBuffer.close();
}
else
return null;
}
catch(IOException e)
{ }
return buffer.toString();
} private String repalceString(String replacedStr)
{
String towSpaces = " ";
String oneSpace = " ";
String noTabSpaceStr = replacedStr;
noTabSpaceStr = noTabSpaceStr.replaceAll("\t", oneSpace);
noTabSpaceStr = noTabSpaceStr.replaceAll(" ", oneSpace);
while(true)
{
noTabSpaceStr = noTabSpaceStr.replaceAll(towSpaces,oneSpace);
int index = noTabSpaceStr.indexOf(towSpaces);
if(index == -1)
break;
}
return noTabSpaceStr;
}
}