📄 swingbuilder.java
字号:
registerFactory("tableModel", new Factory() { public Object newInstance(Map properties) { ValueModel model = (ValueModel) properties.remove("model"); if (model == null) { Object list = properties.remove("list"); if (list == null) { list = new ArrayList(); } model = new ValueHolder(list); } return new DefaultTableModel(model); } }); passThroughNodes.put("tableModel", javax.swing.table.TableModel.class); registerFactory("propertyColumn", new Factory() { public Object newInstance(Map properties) { Object current = getCurrent(); if (current instanceof DefaultTableModel) { DefaultTableModel model = (DefaultTableModel) current; Object header = properties.remove("header"); if (header == null) { header = ""; } String property = (String) properties.remove("propertyName"); if (property == null) { throw new IllegalArgumentException("Must specify a property for a propertyColumn"); } Class type = (Class) properties.remove("type"); if (type == null) { type = Object.class; } return model.addPropertyColumn(header, property, type); } else { throw new RuntimeException("propertyColumn must be a child of a tableModel"); } } }); registerFactory("closureColumn", new Factory() { public Object newInstance(Map properties) { Object current = getCurrent(); if (current instanceof DefaultTableModel) { DefaultTableModel model = (DefaultTableModel) current; Object header = properties.remove("header"); if (header == null) { header = ""; } Closure readClosure = (Closure) properties.remove("read"); if (readClosure == null) { throw new IllegalArgumentException("Must specify 'read' Closure property for a closureColumn"); } Closure writeClosure = (Closure) properties.remove("write"); Class type = (Class) properties.remove("type"); if (type == null) { type = Object.class; } return model.addClosureColumn(header, readClosure, writeClosure, type); } else { throw new RuntimeException("propertyColumn must be a child of a tableModel"); } } }); //Standard Layouts registerBeanFactory("borderLayout", BorderLayout.class); registerBeanFactory("cardLayout", CardLayout.class); registerBeanFactory("flowLayout", FlowLayout.class); registerBeanFactory("gridBagLayout", GridBagLayout.class); registerBeanFactory("gridLayout", GridLayout.class); registerBeanFactory("overlayLayout", OverlayLayout.class); registerBeanFactory("springLayout", SpringLayout.class); registerBeanFactory("gridBagConstraints", GridBagConstraints.class); registerBeanFactory("gbc", GridBagConstraints.class); // shortcut name // box layout registerFactory("boxLayout", new Factory() { public Object newInstance(Map properties) throws InstantiationException, InstantiationException, IllegalAccessException { return createBoxLayout(properties); } }); // Box related layout components registerFactory("hbox", new Factory() { public Object newInstance(Map properties) { return Box.createHorizontalBox(); } }); registerFactory("hglue", new Factory() { public Object newInstance(Map properties) { return Box.createHorizontalGlue(); } }); registerFactory("hstrut", new Factory() { public Object newInstance(Map properties) { try { Object num = properties.remove("width"); if (num instanceof Number) { return Box.createHorizontalStrut(((Number)num).intValue()); } else { return Box.createHorizontalStrut(6); } } catch (RuntimeException re) { re.printStackTrace(System.out); throw re; } } }); registerFactory("vbox", new Factory() { public Object newInstance(Map properties) { return Box.createVerticalBox(); } }); registerFactory("vglue", new Factory() { public Object newInstance(Map properties) { return Box.createVerticalGlue(); } }); registerFactory("vstrut", new Factory() { public Object newInstance(Map properties) { Object num = properties.remove("height"); if (num instanceof Number) { return Box.createVerticalStrut(((Number)num).intValue()); } else { return Box.createVerticalStrut(6); } } }); registerFactory("glue", new Factory() { public Object newInstance(Map properties) { return Box.createGlue(); } }); registerFactory("rigidArea", new Factory() { public Object newInstance(Map properties) { Dimension dim; Object o = properties.remove("size"); if (o instanceof Dimension) { dim = (Dimension) o; } else { int w, h; o = properties.remove("width"); w = ((o instanceof Number)) ? ((Number)o).intValue() : 6; o = properties.remove("height"); h = ((o instanceof Number)) ? ((Number)o).intValue() : 6; dim = new Dimension(w, h); } return Box.createRigidArea(dim); } }); // table layout registerBeanFactory("tableLayout", TableLayout.class); registerFactory("tr", new Factory() { public Object newInstance(Map properties) { Object parent = getCurrent(); if (parent instanceof TableLayout) { return new TableLayoutRow((TableLayout) parent); } else { throw new RuntimeException("'tr' must be within a 'tableLayout'"); } } }); registerFactory("td", new Factory() { public Object newInstance(Map properties) { Object parent = getCurrent(); if (parent instanceof TableLayoutRow) { return new TableLayoutCell((TableLayoutRow) parent); } else { throw new RuntimeException("'td' must be within a 'tr'"); } } }); } protected Object createBoxLayout(Map properties) { Object parent = getCurrent(); if (parent instanceof Container) { Object axisObject = properties.remove("axis"); int axis = BoxLayout.X_AXIS; if (axisObject != null) { Integer i = (Integer) axisObject; axis = i.intValue(); } Container target = (Container) parent; if (target instanceof RootPaneContainer) { target = ((RootPaneContainer) target).getContentPane(); } BoxLayout answer = new BoxLayout(target, axis); // now lets try set the layout property InvokerHelper.setProperty(parent, "layout", answer); return answer; } else { throw new RuntimeException("Must be nested inside a Container"); } } protected Object createDialog(Map properties) { JDialog dialog; Object owner = properties.remove("owner"); // if owner not explicit, use the last window type in the list if ((owner == null) && !containingWindows.isEmpty()) { owner = containingWindows.getLast(); } if (owner instanceof Frame) { dialog = new JDialog((Frame) owner); } else if (owner instanceof Dialog) { dialog = new JDialog((Dialog) owner); } else { dialog = new JDialog(); } containingWindows.add(dialog); return dialog; } /** * Uses 'format," or "value," (in order) * */ protected Object createFormattedTextField(Map properties) { JFormattedTextField ftf; if (properties.containsKey("format")) { ftf = new JFormattedTextField((Format) properties.remove("format")); } else if (properties.containsKey("value")) { ftf = new JFormattedTextField(properties.remove("value")); } else { ftf = new JFormattedTextField(); } return ftf; } protected Object createFrame(Map properties) { JFrame frame = new JFrame(); containingWindows.add(frame); return frame; } protected Object createWindow(Map properties) { JWindow window; Object owner = properties.remove("owner"); // if owner not explicit, use the last window type in the list if ((owner == null) && !containingWindows.isEmpty()) { owner = containingWindows.getLast(); } if (owner instanceof Frame) { window = new JWindow((Frame) owner); } else if (owner instanceof Window) { window = new JWindow((Window) owner); } else { window = new JWindow(); } containingWindows.add(window); return window; } protected Object createComboBox(Map properties) { Object items = properties.remove("items"); if (items instanceof Vector) { return new JComboBox((Vector) items); } else if (items instanceof List) { List list = (List) items; return new JComboBox(list.toArray()); } else if (items instanceof Object[]) { return new JComboBox((Object[]) items); } else { return new JComboBox(); } } protected void registerBeanFactory(String name, final Class beanClass) { registerFactory(name, new Factory() { public Object newInstance(Map properties) throws InstantiationException, IllegalAccessException { return beanClass.newInstance(); } }); } protected void registerFactory(String name, Factory factory) { factories.put(name, factory); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -