My first SWING program

xiaoxiao2021-03-06  70

Use the reflection mechanism to get the JavaBean properties, then generate an XML file .//xmlframe.javaPackage Xmlgen.gui;

Import java.aw. *; import javax.swing. *;

public class XmlFrame extends JFrame {public XmlFrame () {this.setTitle ( "Xml Generator"); Toolkit kit = Toolkit.getDefaultToolkit (); Dimension d = kit.getScreenSize (); int width = d.width; int height = d .height; this.setLocation (Width-800) / 2 (Height-600) / 2); this.setsize (800, 600); this.setContentPane (new xmlpanel ()); this.setDefaultcloseOperation (jframe.exit_on_close); This.Show ();} public static void main (string [] args) {new xmlframe ();}} // xmlpanel.java

Package Xmlgen.gui;

Import java.aw. *; import javax.swing. *; import java.awt.event. *; import javax.swing.event. *; import java.util. *; import xmlgen.core. *;

public class XmlPanel extends JPanel {private JPanel midPane, classPane, propertyPane, elementPane; private JPanel xmlPane; private JTextArea xmlContent; private JTextField txtPackage, txtClass, txtRoot, txtElement, txtProperty; private JLabel lblPackage, lblClass, lblRoot, lblElement; private JButton btnClass, BTNDELPRO, BTNADDELEMENT, BTNDELEMENT, BTNGEN; Private Jlist Lstclass, Lstxml; Private defaultListModel Lmclass, LMXML

private void init () {this.setLayout (new BorderLayout ()); classPane = new JPanel (); classPane.setBorder (BorderFactory.createCompoundBorder (BorderFactory.createTitledBorder ( "full class name"), BorderFactory.createEmptyBorder (5,5, 5, 5))); this.lblpackage = new jlabel ("Class package name:"); this.lblclass = new jlabel ("Classification:"); this.txtPackage = new jtextfield (20); this.txtclass = new JTextField (20); this.btnClass = new JButton ( "get attributes"); this.btnClass.setEnabled (false); this.btnClass.addActionListener (new ActionListener () {public void actionPerformed (ActionEvent e) {String fullName = TXTPackage.getText (). TRIM () "." txtclass.getText (). TRIM (); class c = null; xmlcontent.setText (""); lmclass.clear (); try {c = class.forname (FullName);} catch (classnotfoundexception ex) {xmlcontent.settext ("If you can't find the specified class, make sure the environment variable is set correctly"); return;} j Ava.util.list List = generator.getProperties (c); for (int i = 0; i

/ ************************************************** ***************** * / PropertyPane = New jPanel (New BorderLayout ()); PropertyPane.setBorder (BorderFactory.createCompoundBorder (BorderFactory.CreateTitleder ("bean property), BorderFactory .createemptyborder (5, 5, 5, 5))); this.lmclass = new defaultListModel (); lmclass.addelement ("here is the properties of bean"); lmclass.addelement ("Click on the button above"); LMClass.addelement ("Properties in XML" "); lmclass.addelement (" You can delete unnecessary "); this.lstclass = new jlist (this.lmclass); this.lstclass.addListSerectionListener (new listselectionListener () { public void valueChanged (ListSelectionEvent e) {if (e.getValueIsAdjusting () == false) {if (XmlPanel.this.lstClass.getSelectedIndex () == -1) {// No selection, disable fire button. XmlPanel.this. BTNDELPRO.SETENABED (FALSE);

} Else {// Selection, enable the fire button XmlPanel.this.btnDelPro.setEnabled (true);.}}}}); JScrollPane sp1 = new JScrollPane (this.lstClass); this.btnDelPro = new JButton ( "Delete Attribute "); This.btndelpro.setenabled (false); this.btndelpro.addActionListener (new delpropertyListener ()); jPanel p1 = new jPanel (); p1.add (this.btndelpro); PropertyPane.Add (SP1, BorderLayout.Center ); PropertyPane.Add (P1, BorderLayout.South); / **************************************************** *********************************** * / ElementPane = New JPanel (New BorderLayout ()); ElementPane.setBorder (BorderFactory.createCompoundBorder (BorderFactory. CreateTitledborder ("XML Elements Properties", BorderFactory.createemptyBorder (5, 5, 5, 5))); this.lmxml = new defaultListModel (); this.lstxml = new jlist (this.lmxml); this.lstXml.addListSelectionListener (new ListSelectionListener () {public void valueChanged (ListSelectionEvent e) {if (e.getValueIsAdjusting () == false) {if (XmlPanel.this.lstXml.getSelectedIndex () == -1) {// No Selection, Disable Fire Button. XmlPanel.This.btndelelement.setenabled (false);

} Else {// Selection, enable the fire button XmlPanel.this.btnDelElement.setEnabled (true);.}}}}); JScrollPane sp2 = new JScrollPane (this.lstXml); this.btnDelElement = new JButton ( "Delete" ); this.btnDelElement.setEnabled (false); this.btnDelElement.addActionListener (new DelElementListener ()); this.txtProperty = new JTextField (15); this.btnAddElement = new JButton ( "add"); this.btnAddElement.setEnabled (false); this.btnAddElement.addActionListener (new AddElement ()); this.txtProperty.getDocument () addDocumentListener (new addTextListener (this.btnAddElement));. JPanel p2 = new JPanel (); p2.add (this.btnDelElement ); P2.add (this.txtproperty); p2.add (this.btnaddelement); ElementPane.Add (SP2, BorderLayout.center); ElementPane.Add (p2, borderlayout.south); / ****************************************************** * / xmlPane = new JPanel (new BorderLayout ()); xmlPane.setBorder (BorderFactory.createCompoundBorder (BorderFactory.createTitledBorder ( "generated XML"), BorderFactory.createEmptyBorder (5,5,5,5))); this.xmlContent = new Jtextarea (10, 60); this.xmlcontent.seteditable (false); this.lblroot = new Jlabel ("root node:"); this.lblelement = new Jlabel ("child node name:"); this.txtroot = new Jtextfield ("root", 15); this.txtelement = new jtextfield ("item", 15); this.btngen = new jbutton ("Generate XML");

DocumentListener dl = new AddTextListener (this.btnGen); this.txtRoot.getDocument () addDocumentListener (dl);. This.txtElement.getDocument () addDocumentListener (dl);. This.btnGen.addActionListener (new ActionListener () {public void ActionPerformed (ActionEvent E) {string root = txtroot.getText (). Trim (); string element = txtelement.gettext (). Trim (); if (root.equals (")) Root =" root "; if Element.equals (")) Element =" item "; string [] rower = new string [lmclass.size ()]; for (int i = 0; i

//this.add(new JLabel ( "Fuck"), BorderLayout.NORTH);} public XmlPanel () {init ();} class AddElement implements ActionListener {public void actionPerformed (ActionEvent e) {String name = txtProperty.getText ( ) .trim (); // user didn't type in a unique name ... if (name.equals (") || lmxml.contains (name)) {Toolkit.GetDefaultToolkit (). beep (); txtproperty .Requestfocusinwindow (); txtproperty.selectall (); return;}

INDEX = LSTXML.GetSelectedIndIndex (); // get selected index if (index == -1) {// no selection, so INSERT AT beginning index = 0;} else {// add after the selected item index ;

LMXML.INSERTELEMENTAT (Name.trim (), INDEX); // if We just wanted to add to the end, we'd do this: //listmodel.addelement ());

// reset the text field. Txtproperty.requestfocusinwindow (); txtproperty.setText ("");

// Select the new item and make it visible lstXml.setSelectedIndex (index);. LstXml.ensureIndexIsVisible (index);}} class AddTextListener implements DocumentListener {private boolean alreadyEnabled = false; private JButton button;

Public AddTextListener (jButton Button) {this.button = button;}

// Required by DocumentListener. Public void insertupdate (DocumentEvent E) {enablebutton ();

// Required by DocumentListener. Public Void RemoveUpdate (DocumentEvent E) {HandleemPTyTextField (E);

// Required by DocumentListener public void changedUpdate (DocumentEvent e) {if {enableButton () (handleEmptyTextField (e)!);}}. Private void enableButton () {if {button.setEnabled (true) (alreadyEnabled!);}}

private boolean handleEmptyTextField (DocumentEvent e) {if (e.getDocument () getLength () <= 0.) {button.setEnabled (false); alreadyEnabled = false; return true;} return false;}} class DelPropertyListener implements ActionListener {public void actionPerformed (ActionEvent e) {// This method can be called only if // there's a valid selection // so go ahead and remove whatever's selected int [] index = lstClass.getSelectedIndices ();. if (index.length == 0) RETURN; for (int I = index.length-1; i> = 0; I -) lmclass.remove (INDEX [I]);

INT size = lmclass.getsize ();

IF (size == 0) {// Nobody's Left, Disable Firing. btndelpro.setenabled (false);

} else {// select an index. // removed item in last position int pos = index [0] -1; if (pOS <0) POS = 0; LSTClass.setSelectedIndex (POS); Lstclass.ensureIndexisvisible (POS); }}} class DelElementListener implements ActionListener {public void actionPerformed (ActionEvent e) {// This method can be called only if // there's a valid selection // so go ahead and remove whatever's selected. int [] index = lstXml.getSelectedIndices ( ); IF (index.length == 0) return; for (int i = index.length-1; i> = 0; I -) LMXML.Remove (INDEX [I]); int size = lmxml.getsize );

IF (size == 0) {// nobody's left, disable firing. btndelelement.setenabled (false);

} else {// select an index. // removed item in last position int pos = index [0] -1; if (pOS <0) POS = 0; Lstxml.setSelectedIndex (POS); Lstxml.ensureIndexisvisible (POS); }}}} // generator.java

Package Xmlgen.core;

转载请注明原文地址:https://www.9cbs.com/read-87390.html

New Post(0)