Java/XML/XML UI
Версия от 18:01, 31 мая 2010; (обсуждение)
XML User Interface
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
import com.sun.org.apache.xerces.internal.parsers.SAXParser;
public class SimpleApp3 implements ActionListener {
public static void main(String args[]) {
JFrame frame = new JFrame("SimpleApp Demo");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
new SimpleApp3(frame);
}
public SimpleApp3(JFrame frame) {
frame.getContentPane().setLayout(new BorderLayout());
XMLComponent xmlComponent = new XMLComponent();
frame.getContentPane().add("Center", xmlComponent.build("ui.xml"));
frame.setVisible(true);
}
public void actionPerformed(ActionEvent ev) {
System.out.println("You clicked " + ev.getActionCommand());
}
}
class XMLComponent extends DefaultHandler {
private boolean containerActive = false;
private JPanel primaryContainer = new JPanel();
private SAXParser parser = new SAXParser();
public XMLComponent() {
super();
}
public JComponent build(String xmlDocument) {
parser.setContentHandler(this);
try {
parser.parse(new InputSource(new FileInputStream(xmlDocument)));
} catch (Exception ex) {
System.out.println(ex);
}
return primaryContainer;
}
public void startElement(String namespaceURI, String name, String qName, Attributes atts) {
if (name.equals("button"))
primaryContainer.add(new JButton(atts.getValue("label")));
}
}
// ui.xml
/*
* <?xml version="1.0"?> <ui> <button label="XML"/> <button label="is"/> <button
* label="great"/> </ui>
*
*
*/