package Package3;import javax.swing.*;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JCheckBox;
import javax.swing.JButton;
import javax.swing.table.AbstractTableModel;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class testNewClassAdap extends JFrame{ private JPanel jContentPane = null;  
private JLabel jLabel1 = null;
private JTextField jTextField = null;
private JTextField jTextField3 = null;
private JLabel jLabel2 = null;
private JLabel jLabel3 = null;
private JCheckBox jCheckBox = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
private JButton jButton3 = null;
private JButton jButton4 = null;
MyTableModel myModel = new MyTableModel();
JTable table = new JTable(myModel); public testNewClassAdap(){
try{
Initial();
}catch(Exception e){
System.out.println(e.toString());
}
}

public void Initial(){
this.setTitle("NewClass");
this.setSize(480, 360);

jContentPane = new JPanel();
jContentPane.setLayout(null);
//jContentPane.setSize(new Dimension(407, 196));

jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(50, 0, 80, 28));
jLabel1.setText("Class Name");

jLabel3 = new JLabel();
jLabel3.setBounds(new Rectangle(30, 40, 100, 28));
jLabel3.setText("Package Name");


jTextField = new JTextField();
jTextField.setBounds(new Rectangle(130, 2, 90, 28));

jTextField3 = new JTextField();
jTextField3.setBounds(new Rectangle(130, 42, 90, 28));

jLabel2 = new JLabel();
jLabel2.setBounds(new Rectangle(280, 0, 50, 28));
jLabel2.setText("is public");

jCheckBox = new JCheckBox();
jCheckBox.setBounds(new Rectangle(330, 5, 20, 20));

jButton1 = new JButton();
jButton1.setBounds(new Rectangle(40, 280, 100, 25));
jButton1.setText("Save");
jButton1.addActionListener(new testNewClassAdap_jButton1_actionAdapter(this));

jButton2 = new JButton();
jButton2.setBounds(new Rectangle(140, 280, 100,25));
jButton2.setText("Delete");

jButton3 = new JButton();
jButton3.setBounds(new Rectangle(240, 280, 100, 25));
jButton3.setText("Insert");

jButton4 = new JButton();
jButton4.setBounds(new Rectangle(340, 280, 100, 25));
jButton4.setText("Close");

JScrollPane scrollPane = new JScrollPane(table);
scrollPane.setBounds(10,80,460,180);

jContentPane.add(scrollPane, null);

jContentPane.add(jLabel1, null);
jContentPane.add(jTextField, null);
jContentPane.add(jLabel3, null);
jContentPane.add(jTextField3, null);
jContentPane.add(jLabel2, null);
jContentPane.add(jCheckBox, null);
jContentPane.add(jButton1, null);
jContentPane.add(jButton2, null);
jContentPane.add(jButton3, null);
jContentPane.add(jButton4, null);

this.setContentPane(jContentPane);
this.setVisible(true);
}

private boolean DEBUG = true;
class MyTableModel extends AbstractTableModel{
final String[] columnNames = {"Nmae", "Type", "Access", "Property", "getter", "setter"};

final Object[][] data = {
{"filed1", "long", "public", "index", new Boolean(true), new Boolean(false)},
{"filed2", "int", "public", "index", new Boolean(false), new Boolean(false)},
{"filed3", "int", "public", "index", new Boolean(false), new Boolean(false)},
{"filed4", "long", "public", "index", new Boolean(false), new Boolean(false)},
{"filed5", "long", "public", "index", new Boolean(false), new Boolean(false)},
};

public int getColumnCount() {
return columnNames.length;
} public int getRowCount() {
return data.length;
}

public String getColumnName(int col){
return columnNames[col];
} public Object getValueAt(int row, int col) {
return data[row][col];
}

//获取列的数据类型,JTable使用该方法确定数据的显示格式
public Class getColumnClass(int c){
return getValueAt(0,c).getClass();
}

//如果表格是不可编辑的,则不需要实现该方法
public boolean isCellEditable(int row, int col){
return true;
}

//改变网格单元的值
public void setValueAt(Object value, int row, int col){
//打印输出修改数据的位置
if(DEBUG){///////////////////////////////
System.out.println("Setting value at" + row + "," + col
+ "to" + value
+ "(an instance of"
+ value.getClass() + ")");
}

if(data[0][col] instanceof Integer && !(value instanceof Integer)){
try{
data[row][col] = new Integer(value.toString());
fireTableCellUpdated(row, col);
}catch(NumberFormatException e) {
JOptionPane.showMessageDialog(testNewClassAdap.this, "The \""
+ getColumnName(col)
+ "\" column accepts only integer values.");
}
}else {
data[row][col] = value;
fireTableCellUpdated(row, col);
}
}
}

void jButton1_actionPerformed(ActionEvent e) {
toXML toxml = new toXML();
toxml.toXMLaa("E:\\test.xml");
this.dispose();
}

public class toXML {
    public  void toXML(){
    }
public  void toXMLaa(String filepath){
try
{
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
           DocumentBuilder builder = factory.newDocumentBuilder();
           Document document = builder.newDocument();
           Element root = document.createElement("Project");
           root.setAttribute("Name", "PROJECT");
           document.appendChild(root);  
           
           Element Packbag = document.createElement(jTextField3.getText());
           root.appendChild(Packbag); 
           
           Element Class = document.createElement(jTextField.getText());
           Packbag.appendChild(Class);   
           
           for(int rnum=0;rnum<myModel.getRowCount();rnum++){
            Element field = document.createElement("field");
            Class.appendChild(field); 
            field.setAttribute(myModel.getColumnName(1),(String) myModel.getValueAt(rnum,1));
            field.setAttribute(myModel.getColumnName(2),(String) myModel.getValueAt(rnum,2));
            field.setAttribute(myModel.getColumnName(3),(String) myModel.getValueAt(rnum,3));
            field.setAttribute(myModel.getColumnName(4),(String) myModel.getValueAt(rnum,4));
            field.setAttribute(myModel.getColumnName(5),(String) myModel.getValueAt(rnum,5));
           }          
}
catch (Exception e)
    {
            System.out.println(e.toString());
    }
}
}
 
 class testNewClassAdap_jButton1_actionAdapter implements java.awt.event.ActionListener {
 testNewClassAdap adaptee;
 testNewClassAdap_jButton1_actionAdapter(testNewClassAdap adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
} public static void main(String[] args) {
testNewClassAdap frame = new testNewClassAdap();
frame.setVisible(true);
}

}