<html>
<body>
Try removing all the GUI/Swing stuff that has nothing to do with JDOM,
and focus on a simplified example. Maybe you can figure it out yourself
then (looking at JDOMs JavaDoc), or post the minimized example here for
further help.<br><br>
At 2006-05-18 16:51, cs_student wrote:<br>
<blockquote type=cite class=cite cite="">Hi,<br>
I need for a help ..I don't know how to add an element to the xml
file,&nbsp; delete from the file or edite name of any element..I'm using
JBuilder..as you know that dealing with it is so hard!<br>
&nbsp;<br>
this is my code<br>
package fina;<br>
import java.awt.*;<br>
import javax.swing.*;<br>
import javax.swing.tree.*;<br>
import javax.swing.event.*;<br>
import java.util.Iterator;<br>
import java.util.List;<br>
import org.jdom.*;<br>
import org.jdom.input.SAXBuilder;<br>
import java.io.File;<br>
import java.awt.event.*;<br>
import javax.swing.event.TreeSelectionEvent;<br>
import javax.swing.tree.DefaultMutableTreeNode;<br>
&nbsp;public class XMLTreeViewer extends JFrame<br>
implements TreeSelectionListener {<br>
&nbsp; //The JTree to display the XML<br>
private JTree xmlTree;<br>
//The XML document to be output to the JTree<br>
private Document xmlDoc;<br>
DefaultMutableTreeNode tn;<br>
&nbsp; JButton AddButton = new JButton();<br>
&nbsp; JTextField TextField = new JTextField();<br>
&nbsp; JTextArea TextArea = new JTextArea();<br>
&nbsp;<br>
public XMLTreeViewer(Document doc) {<br>
&nbsp; super();<br>
&nbsp;// WindowUtilities.setNativeLookAndFeel();<br>
&nbsp; addWindowListener(new ExitListener());<br>
&nbsp; this.xmlDoc = doc;<br>
&nbsp; setSize(600, 450);<br>
&nbsp; tn = new DefaultMutableTreeNode(&quot;XML&quot;);<br>
&nbsp; initialize();<br>
}<br>
private void initialize() {<br>
&nbsp; xmlTree = new JTree();<br>
&nbsp;&nbsp;&nbsp; xmlTree.setEditable(true);<br>
&nbsp;&nbsp;&nbsp;
AddButton.setBackground(SystemColor.inactiveCaptionText);<br>
&nbsp;&nbsp;&nbsp; AddButton.setForeground(Color.black);<br>
&nbsp;&nbsp;&nbsp; AddButton.setText(&quot;ADD&quot;);<br>
&nbsp;&nbsp;&nbsp; AddButton.addMouseListener(new
java.awt.event.MouseAdapter() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void mouseClicked(MouseEvent e)
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
AddButton_mouseClicked(e);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; });<br><br>
&nbsp;&nbsp;&nbsp; TextField.setText(&quot;&quot;);<br>
&nbsp;&nbsp;&nbsp; TextArea.setText(&quot;jTextArea1&quot;);<br>
&nbsp;&nbsp;&nbsp; getContentPane().add(new JScrollPane(xmlTree),
BorderLayout.CENTER);<br>
&nbsp;&nbsp;&nbsp; this.getContentPane().add(TextField,
BorderLayout.NORTH);<br>
&nbsp;&nbsp;&nbsp; this.getContentPane().add(AddButton,
BorderLayout.SOUTH);<br>
&nbsp;&nbsp;&nbsp; this.getContentPane().add(TextArea,
BorderLayout.EAST);<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp; processElement(xmlDoc.getRootElement(), tn);<br>
&nbsp; ( (DefaultTreeModel) xmlTree.getModel()).setRoot(tn);<br>
&nbsp; addWindowListener(new java.awt.event.WindowAdapter() {<br>
&nbsp;&nbsp;&nbsp; public void windowClosing(java.awt.event.WindowEvent
e) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //release all the resource<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlTree = null;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tn = null;<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp; });<br>
&nbsp; setVisible(true);<br>
&nbsp; //add Listener to Print to Screen the xml tag selected\<br>
&nbsp; xmlTree.addTreeSelectionListener(this);<br>
}<br>
public void valueChanged(TreeSelectionEvent evt) {<br>
&nbsp;&nbsp; // Get all nodes whose selection status has changed<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TreePath[] paths = evt.getPaths();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Print the last Path Component
selected<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println(evt.getPath().getLastPathComponent());<br>
//print the full path from the selected tag<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
System.out.println(evt.getPath().toString());<br>
&nbsp;&nbsp; }<br><br>
private void processElement(Element el, DefaultMutableTreeNode dmtn)
{<br>
&nbsp; DefaultMutableTreeNode currentNode =<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new
DefaultMutableTreeNode(el.getName());<br>
&nbsp; String text = el.getTextNormalize();<br>
&nbsp; if ( (text != null) &amp;&amp; (!text.equals(&quot;&quot;)))
{<br>
&nbsp;&nbsp;&nbsp; currentNode.add(new
DefaultMutableTreeNode(text));<br>
&nbsp; }<br>
&nbsp; Iterator children = el.getChildren().iterator();<br>
&nbsp; while (children.hasNext()) {<br>
&nbsp;&nbsp;&nbsp; processElement( (Element) children.next(),
currentNode);<br>
&nbsp; }<br>
&nbsp; dmtn.add(currentNode);<br>
}<br><br>
&nbsp; public static void main(String[] args)throws Exception {<br>
&nbsp;&nbsp;&nbsp; SAXBuilder builder = new SAXBuilder();<br>
&nbsp;&nbsp;&nbsp; Document doc =
builder.build(&quot;comp.xml&quot;);<br>
&nbsp;&nbsp;&nbsp; XMLTreeViewer viewer = new XMLTreeViewer(doc);<br>
&nbsp;&nbsp;&nbsp; viewer.addWindowListener(new
java.awt.event.WindowAdapter() {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void
windowClosing(java.awt.event.WindowEvent e)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {System.exit(0);}<br>
&nbsp;&nbsp; });<br>
&nbsp; }<br>
&nbsp;&nbsp; void AddButton_mouseClicked(MouseEvent e) {<br>
&nbsp;&nbsp;&nbsp;&nbsp; TextArea.setSize(20,20);<br>
&nbsp;&nbsp; TextArea.setText(&quot;An element will be\n
added..&quot;);<br>
&nbsp;&nbsp; TextField.getText();<br>
&nbsp;&nbsp; Object o=xmlTree.getLastSelectedPathComponent();<br>
&nbsp;&nbsp; addObject(o);<br>
&nbsp; // String
s=xmlTree.getLastSelectedPathComponent().toString();<br><br>
&nbsp; }<br>
&nbsp; public void addObject(Object child) {<br>
&nbsp;&nbsp;&nbsp; DefaultMutableTreeNode parentNode=null;<br>
&nbsp;&nbsp;&nbsp; TreePath parentPath=xmlTree.getSelectionPath();<br>
&nbsp;&nbsp;&nbsp; if(parentPath!=null){<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
parentNode=(DefaultMutableTreeNode)(parentPath.getLastPathComponent());<br>
&nbsp;&nbsp;&nbsp;&nbsp; addObject(parentNode, child, true);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp; public void addObject(DefaultMutableTreeNode parentNode, Object
child,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
boolean b) {<br>
&nbsp; }<br>
}<br>
//---------------------------------------<br>
package fina;<br>
import javax.swing.*;<br>
import java.awt.*;<br>
/** A few utilities that simplify using windows in Swing.<br>
&nbsp;*&nbsp; 1998-99 Marty Hall,
<a href="http://www.apl.jhu.edu/~hall/java/">
http://www.apl.jhu.edu/~hall/java/</a><br>
&nbsp;*/<br>
public class WindowUtilities {<br>
&nbsp; /** Tell system to use native look and feel, as in previous<br>
&nbsp;&nbsp; *&nbsp; releases. Metal (Java) LAF is the default
otherwise.<br>
&nbsp;&nbsp; */<br>
&nbsp; public static void setNativeLookAndFeel() {<br>
&nbsp;&nbsp;&nbsp; try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());<br>
&nbsp;&nbsp;&nbsp; } catch(Exception e) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;Error setting
native LAF: &quot; + e);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp; }<br>
&nbsp; public static void setJavaLookAndFeel() {<br>
&nbsp;&nbsp;&nbsp; try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());<br>
&nbsp;&nbsp;&nbsp; } catch(Exception e) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;Error setting
Java LAF: &quot; + e);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp; }<br>
&nbsp;&nbsp; public static void setMotifLookAndFeel() {<br>
&nbsp;&nbsp;&nbsp; try {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
UIManager.setLookAndFeel(&quot;com.sun.java.swing.plaf.motif.MotifLookAndFeel&quot;);<br>
&nbsp;&nbsp;&nbsp; } catch(Exception e) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&quot;Error setting
Motif LAF: &quot; + e);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp; }<br>
&nbsp; /** A simplified way to see a JPanel or other Container.<br>
&nbsp;&nbsp; *&nbsp; Pops up a JFrame with specified Container as the
content pane.<br>
&nbsp;&nbsp; */<br>
&nbsp; public static JFrame openInJFrame(Container content,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int width,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int height,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
String title,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Color bgColor) {<br>
&nbsp;&nbsp;&nbsp; JFrame frame = new JFrame(title);<br>
&nbsp;&nbsp;&nbsp; frame.setBackground(bgColor);<br>
&nbsp;&nbsp;&nbsp; content.setBackground(bgColor);<br>
&nbsp;&nbsp;&nbsp; frame.setSize(width, height);<br>
&nbsp;&nbsp;&nbsp; frame.setContentPane(content);<br>
&nbsp;&nbsp;&nbsp; frame.addWindowListener(new ExitListener());<br>
&nbsp;&nbsp;&nbsp; frame.setVisible(true);<br>
&nbsp;&nbsp;&nbsp; return(frame);<br>
&nbsp; }<br>
&nbsp; /** Uses Color.white as the background color. */<br>
&nbsp; public static JFrame openInJFrame(Container content,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int width,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int height,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
String title) {<br>
&nbsp;&nbsp;&nbsp; return(openInJFrame(content, width, height, title,
Color.white));<br>
&nbsp; }<br>
&nbsp; /** Uses Color.white as the background color, and the<br>
&nbsp;&nbsp; *&nbsp; name of the Container's class as the JFrame
title.<br>
&nbsp;&nbsp; */<br>
&nbsp; public static JFrame openInJFrame(Container content,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int width,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int height) {<br>
&nbsp;&nbsp;&nbsp; return(openInJFrame(content, width, height,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
content.getClass().getName(),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Color.white));<br>
&nbsp; }<br>
}<br>
//----------------------------------------<br>
package fina;<br>
import java.awt.*;<br>
import java.awt.event.*;<br>
/** A listener that you attach to the top-level Frame or JFrame of<br>
&nbsp;*&nbsp; your application, so quitting the frame exits the
application.<br>
&nbsp;*&nbsp; 1998-99 Marty Hall,
<a href="http://www.apl.jhu.edu/~hall/java/">
http://www.apl.jhu.edu/~hall/java/</a><br>
&nbsp;*/<br>
public class ExitListener extends WindowAdapter {<br>
&nbsp; public void windowClosing(WindowEvent event) {<br>
&nbsp;&nbsp;&nbsp; System.exit(0);<br>
&nbsp; }<br>
}<br>
thank you ..<br>
Bassam</blockquote></body>
</html>