⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swingbuilder.java

📁 Groovy动态语言 运行在JVM中的动态语言 可以方便的处理业务逻辑变化大的业务
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        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 + -