📄 adventuredemo.java
字号:
/* * BindingDemoForm.java * * Created on January 10, 2005, 1:55 PM */package org.jdesktop.demo.adventure;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.text.NumberFormat;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFormattedTextField;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.text.DefaultFormatterFactory;import javax.swing.text.NumberFormatter;import org.jdesktop.dataset.DataSet;import java.io.File;import javax.swing.JList;import javax.swing.JMenuBar;import javax.swing.JTable;import javax.swing.JTextArea;import javax.swing.JTextField;//import org.jdesktop.binding.BindingFactory;import org.jdesktop.dataset.DataRelation;import org.jdesktop.dataset.DataRelationTable;import org.jdesktop.demo.DemoPanel;import org.jdesktop.demo.MainWindow;import org.jdesktop.swingx.JXFrame;import org.jdesktop.swingx.JXImagePanel;import org.jdesktop.swingx.JXTitledPanel;import org.jdesktop.swingx.util.WindowUtils;/** * * @author Richard Bair */public class AdventureDemo extends JXFrame { /** * Comment for <code>serialVersionUID</code> */ private static final long serialVersionUID = 3544670668122894901L; private DataSet ds; private JTextField nameTF; private JTextField locationTF; private JFormattedTextField priceTF; private JTextArea descriptionTA; private JXImagePanel imagePanel; private JList navigator; private JTextField catNameTF; private JTable activitiesTBL; /** Creates new form BindingDemoForm */ public AdventureDemo() { //construct the DataSet, and loads it with data createDataSet(); //init the gui components initComponents(); //bind the gui components// navigator.setDataSource(ds.getTable("package"));// navigator.setDataField("name");// // nameTF.setDataSource(ds.getTable("package"));// nameTF.setDataField("name");//// locationTF.setDataSource(ds.getTable("package"));// locationTF.setDataField("location");// // BindingFactory.bind(priceTF, ds.getTable("package"), "price");// // descriptionTA.setDataSource(ds.getTable("package"));// descriptionTA.setDataField("description");// // BindingFactory.bind(imagePanel, ds.getTable("package"), "imageuri");// // activitiesTBL.setDataSource(ds.getTable("activitiesDetail"));// activitiesTBL.setDataField(""); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() { setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Adventure Builder 2.1"); //use a border layout for the content pane JPanel contentPane = new JPanel(new GridBagLayout()); setContentPane(contentPane); JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); splitPane.setBorder(BorderFactory.createEmptyBorder()); contentPane.add(splitPane, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(11, 11, 12, 12), 0, 0)); JXTitledPanel navigatorPanel = new JXTitledPanel("Packages"); navigator = new JList(); //ok, this part is just for fun :)// navigator.setCellRenderer(new DefaultListCellRenderer() {// Map<String,ImageIcon> cachedImages = new HashMap<String,ImageIcon>();// public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {// JLabel lbl = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);// String imageurl = (String)packageDS.getFieldValue("IMAGEURI", index);// if (!cachedImages.containsKey(imageurl)) {// //scale the image and stuff it in the cache// try {// ImageIcon icon = new ImageIcon(new URL(imageurl));// icon = new ImageIcon(icon.getImage().getScaledInstance(16, 16, 0));// cachedImages.put(imageurl, icon);// } catch (Exception e) {// e.printStackTrace();// }// }// lbl.setIcon(cachedImages.get(imageurl));// return lbl;// }// }); JScrollPane navSP = new JScrollPane(navigator); navSP.setBorder(BorderFactory.createEmptyBorder()); navigatorPanel.setContentContainer(navSP); splitPane.setLeftComponent(navigatorPanel); JSplitPane detailSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); detailSplitPane.setBorder(BorderFactory.createEmptyBorder()); detailSplitPane.setTopComponent(createPackageDetail()); detailSplitPane.setBottomComponent(createActivitiesDetail()); detailSplitPane.setDividerLocation(250); splitPane.setRightComponent(detailSplitPane); JButton saveButton = new JButton("Save"); saveButton.setMnemonic('S'); saveButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveButtonActionPerformed(evt); } }); JButton refreshButton = new JButton("Refresh"); refreshButton.setMnemonic('R'); refreshButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { refreshButtonActionPerformed(evt); } });// contentPane.add(ButtonBarFactory.buildRightAlignedBar(saveButton, refreshButton), new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(0, 11, 12, 12), 0, 0)); setSize(new Dimension(800, 600)); setLocation(WindowUtils.getPointForCentering(this)); } private JXTitledPanel createPackageDetail() { //builder for creating the detail pane JPanel detailsPanel = new JPanel(new GridBagLayout()); imagePanel = new JXImagePanel(); imagePanel.setBorder(BorderFactory.createEmptyBorder()); detailsPanel.add(imagePanel, new GridBagConstraints(0, 0, 1, 4, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(12, 12, 5, 5), 0, 0)); nameTF = new JTextField(); detailsPanel.add(new JLabel("Name"), new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(12, 0, 0, 0), 0, 0)); detailsPanel.add(nameTF, new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(12, 12, 0, 11), 0, 0)); locationTF = new JTextField(); detailsPanel.add(new JLabel("Location"), new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0)); detailsPanel.add(locationTF, new GridBagConstraints(2, 1, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(5, 12, 0, 11), 0, 0)); priceTF = new JFormattedTextField(); NumberFormat amountDisplayFormat = NumberFormat.getCurrencyInstance(); amountDisplayFormat.setMinimumFractionDigits(2); NumberFormat amountEditFormat = NumberFormat.getNumberInstance(); priceTF.setFormatterFactory(new DefaultFormatterFactory( new NumberFormatter(amountDisplayFormat), new NumberFormatter(amountDisplayFormat), new NumberFormatter(amountEditFormat))); detailsPanel.add(new JLabel("Price"), new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0)); detailsPanel.add(priceTF, new GridBagConstraints(2, 2, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(5, 12, 0, 11), 0, 0)); catNameTF = new JTextField();// detailsPanel.add(new JLabel("Category"), new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));// detailsPanel.add(catNameTF, new GridBagConstraints(2, 3, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(5, 12, 0, 11), 0, 0)); descriptionTA = new JTextArea(); detailsPanel.add(new JLabel("Description"), new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0)); detailsPanel.add(new JScrollPane(descriptionTA), new GridBagConstraints(2, 3, 1, 1, 1.0, 1.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(5, 12, 11, 11), 0, 0)); JXTitledPanel detailPanel = new JXTitledPanel("Package Details"); detailPanel.setContentContainer(detailsPanel); return detailPanel; } private JXTitledPanel createActivitiesDetail() { JXTitledPanel activitiesPanel = new JXTitledPanel("Activities"); activitiesTBL = new JTable();// activitiesTBL.setEvenRowBackground(Color.WHITE);// activitiesTBL.setOddRowBackground(new Color(0xd2dfee));// activitiesTBL.setHasColumnControl(true); activitiesTBL.setShowHorizontalLines(false);// activitiesTBL.getTable().setSortable(true); activitiesTBL.setBorder(BorderFactory.createEmptyBorder());// activitiesTBL.getTable().setDefaultRenderer(String.class, new DefaultTableCellRenderer() {// private JXImagePanel imagePanel = new JXImagePanel();// public Component getTableCellRendererComponent(javax.swing.JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {// if (value instanceof String && ((String)value).startsWith("http://") && ((String)value).endsWith(".gif")) {// try {//// super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);// ImageIcon ii = new ImageIcon(new URL((String)value));// System.out.println(ii.getIconWidth());// System.out.println(ii.getImageLoadStatus() == java.awt.MediaTracker.COMPLETE);// imagePanel.setIcon(ii);// return imagePanel;// } catch (Exception e) {// e.printStackTrace();// }// }// return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);// }// // }); activitiesPanel.getContentContainer().setLayout(new BorderLayout()); activitiesPanel.getContentContainer().add(activitiesTBL, BorderLayout.CENTER); return activitiesPanel; } private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed// conn.setConnected(false); ds.readXml(new File("/home/rb156199/dataset.xml")); }//GEN-LAST:event_refreshButtonActionPerformed private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed// conn.setConnected(true); System.out.println(ds.writeXml()); }//GEN-LAST:event_saveButtonActionPerformed private void createDataSet() { ds = DataSet.createFromSchema(getClass().getResourceAsStream("resources/dataset.xsd")); DataRelation packageToCategory = ds.createRelation(); packageToCategory.setName("packageToCategory"); packageToCategory.setParentColumn(ds.getTable("package").getColumn("catid")); packageToCategory.setChildColumn(ds.getTable("category").getColumn("catid")); DataRelation packageToActivityList = ds.createRelation(); packageToActivityList.setName("packageToActivityList"); packageToActivityList.setParentColumn(ds.getTable("package").getColumn("packageid")); packageToActivityList.setChildColumn(ds.getTable("activityList").getColumn("packageid")); DataRelationTable activityListDetails = ds.createRelationTable(); activityListDetails.setName("activityListDetails"); activityListDetails.setRelation(packageToActivityList); activityListDetails.setParentSelector(ds.getTable("package").getSelector("current")); DataRelation activityListToActivity = ds.createRelation(); activityListToActivity.setName("activityListToActivity"); activityListToActivity.setParentColumn(ds.getTable("activityList").getColumn("activityid")); activityListToActivity.setChildColumn(ds.getTable("activity").getColumn("activityid")); DataRelationTable categoryDetail = ds.createRelationTable(); categoryDetail.setName("categoryDetail"); categoryDetail.setRelation(packageToCategory); categoryDetail.setParentSelector(ds.getTable("package").getSelector("current")); DataRelationTable activitiesDetail = ds.createRelationTable(); activitiesDetail.setName("activitiesDetail"); activitiesDetail.setRelation(activityListToActivity); activitiesDetail.setParentTable(ds.getTable("activityListDetails")); ds.readXml(getClass().getResourceAsStream("resources/dataset.xml")); } public static void main(String[] args) {// MainWindow.main(new String[]{"-d", "org.jdesktop.demo.adventure.AdventureDemo"}); new AdventureDemo().setVisible(true); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -