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

📄 jcalendardemo.java

📁 一个demo是关于swing
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    });
                lnfGroup.add(rbmi);
            }
        }

        // the help menu
        JMenu helpMenu = new JMenu("Help");
        helpMenu.setMnemonic('H');

        JMenuItem aboutItem = helpMenu.add(new AboutAction(this));
        aboutItem.setMnemonic('A');
        aboutItem.setAccelerator(KeyStroke.getKeyStroke('A', java.awt.Event.CTRL_MASK));

        menuBar.add(helpMenu);

        return menuBar;
    }

    /**
     * The applet is a PropertyChangeListener for "locale" and "calendar".
     *
     * @param evt Description of the Parameter
     */
    public void propertyChange(PropertyChangeEvent evt) {
        if (calendarPanel != null) {
            if (evt.getPropertyName().equals("calendar")) {
                // calendar = (Calendar) evt.getNewValue();
                // DateFormat df = DateFormat.getDateInstance(DateFormat.LONG,
                // jcalendar.getLocale());
                // dateField.setText(df.format(calendar.getTime()));
            }
        }
    }

    /**
     * Creates a JFrame with a JCalendarDemo inside and can be used for testing.
     *
     * @param s The command line arguments
     */
    public static void main(String[] s) {
        WindowListener l = new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            };

        JFrame frame = new JFrame("JCalendar Demo");
        frame.addWindowListener(l);

        JCalendarDemo demo = new JCalendarDemo();
        demo.init();
        frame.getContentPane().add(demo);
        frame.pack();
        frame.setBounds(200, 200, (int) frame.getPreferredSize().getWidth(),
            (int) frame.getPreferredSize().getHeight());
        frame.setVisible(true);
    }

    /**
     * Installes a demo bean.
     *
     * @param bean the demo bean
     */
    private void installBean(JComponent bean) {
        try {
            componentPanel.removeAll();
            componentPanel.add(bean);

            BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass(),
                    bean.getClass().getSuperclass());
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();

            propertyPanel.removeAll();

            GridBagLayout gridbag = new GridBagLayout();
            GridBagConstraints c = new GridBagConstraints();
            c.fill = GridBagConstraints.BOTH;

            propertyPanel.setLayout(gridbag);

            int count = 0;

            String[] types = new String[] {
                    "class java.util.Locale", "boolean", "int", "class java.awt.Color",
                    "class java.util.Date", "class java.lang.String"
                };

            for (int t = 0; t < types.length; t++) {
                for (int i = 0; i < propertyDescriptors.length; i++) {
                    if (propertyDescriptors[i].getWriteMethod() != null) {
                        String type = propertyDescriptors[i].getPropertyType().toString();

                        final PropertyDescriptor propertyDescriptor = propertyDescriptors[i];
                        final JComponent currentBean = bean;
                        final Method readMethod = propertyDescriptor.getReadMethod();
                        final Method writeMethod = propertyDescriptor.getWriteMethod();

                        //                        System.out.println("Property Descriptor: " +
                        //                            propertyDescriptors[i].getDisplayName() + ": " +
                        // type);
                        if (type.equals(types[t]) &&
                                (((readMethod != null) && (writeMethod != null)) ||
                                ("class java.util.Locale".equals(type)))) {
                            if ("boolean".equals(type)) {
                                boolean isSelected = false;

                                try {
                                    Boolean booleanObj = ((Boolean) readMethod.invoke(bean, null));
                                    isSelected = booleanObj.booleanValue();
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }

                                final JCheckBox checkBox = new JCheckBox("", isSelected);
                                checkBox.addActionListener(new ActionListener() {
                                        public void actionPerformed(ActionEvent event) {
                                            try {
                                                if (checkBox.isSelected()) {
                                                    writeMethod.invoke(currentBean,
                                                        new Object[] { new Boolean(true) });
                                                } else {
                                                    writeMethod.invoke(currentBean,
                                                        new Object[] { new Boolean(false) });
                                                }
                                            } catch (Exception e) {
                                                e.printStackTrace();
                                            }
                                        }
                                    });
                                addProperty(propertyDescriptors[i], checkBox, gridbag);
                                count += 1;
                            } else if ("int".equals(type)) {
                                JSpinField spinField = new JSpinField();
                                spinField.addPropertyChangeListener(new PropertyChangeListener() {
                                        public void propertyChange(PropertyChangeEvent evt) {
                                            try {
                                                if (evt.getPropertyName().equals("value")) {
                                                    writeMethod.invoke(currentBean,
                                                        new Object[] { evt.getNewValue() });
                                                }
                                            } catch (Exception e) {
                                            }
                                        }
                                    });

                                try {
                                    Integer integerObj = ((Integer) readMethod.invoke(bean, null));
                                    spinField.setValue(integerObj.intValue());
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }

                                addProperty(propertyDescriptors[i], spinField, gridbag);
                                count += 1;
                            } else if ("class java.lang.String".equals(type)) {
                                String string = "";

                                try {
                                    string = ((String) readMethod.invoke(bean, null));
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }

                                JTextField textField = new JTextField(string);
                                ActionListener actionListener = new ActionListener() {
                                        public void actionPerformed(ActionEvent e) {
                                            System.out.println("JCalendarDemo.installBean(): " + e);

                                            try {
                                                writeMethod.invoke(currentBean,
                                                    new Object[] { e.getActionCommand() });
                                            } catch (Exception ex) {
                                            }
                                        }
                                    };

                                textField.addActionListener(actionListener);

                                addProperty(propertyDescriptors[i], textField, gridbag);
                                count += 1;
                            } else if ("class java.util.Locale".equals(type)) {
                                JLocaleChooser localeChooser = new JLocaleChooser(bean);
                                localeChooser.setPreferredSize(new Dimension(200,
                                        localeChooser.getPreferredSize().height));
                                addProperty(propertyDescriptors[i], localeChooser, gridbag);
                                count += 1;
                            } else if ("class java.util.Date".equals(type)) {
                                JDateChooser dateChooser = new JDateChooser();
                                dateChooser.addPropertyChangeListener((PropertyChangeListener) bean);
                                addProperty(propertyDescriptors[i], dateChooser, gridbag);
                                count += 1;
                            } else if ("class java.awt.Color".equals(type)) {
                                final JButton button = new JButton();

                                try {
                                    final Color colorObj = ((Color) readMethod.invoke(bean, null));
                                    button.setText("...");
                                    button.setBackground(colorObj);

                                    ActionListener actionListener = new ActionListener() {
                                            public void actionPerformed(ActionEvent e) {
                                                Color newColor = JColorChooser.showDialog(JCalendarDemo.this,
                                                        "Choose Color", colorObj);
                                                button.setBackground(newColor);

                                                try {
                                                    writeMethod.invoke(currentBean,
                                                        new Object[] { newColor });
                                                } catch (Exception e1) {
                                                    e1.printStackTrace();
                                                }
                                            }
                                        };

                                    button.addActionListener(actionListener);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }

                                addProperty(propertyDescriptors[i], button, gridbag);
                                count += 1;
                            }
                        }
                    }
                }
            }

            URL iconURL = bean.getClass().getResource("images/" + bean.getName() + "Color16.gif");
            ImageIcon icon = new ImageIcon(iconURL);

            componentTitlePanel.setTitle(bean.getName(), icon);
            bean.validate();
            propertyPanel.validate();
            componentPanel.validate();
        } catch (IntrospectionException e) {
            e.printStackTrace();
        }
    }

    private void addProperty(PropertyDescriptor propertyDescriptor, JComponent editor,
        GridBagLayout grid) {
        String text = propertyDescriptor.getDisplayName();
        String newText = "";

        for (int i = 0; i < text.length(); i++) {
            char c = text.charAt(i);

            if (((c >= 'A') && (c <= 'Z')) || (i == 0)) {
                if (i == 0) {
                    c += ('A' - 'a');
                }

                newText += (" " + c);
            } else {
                newText += c;
            }
        }

        JLabel label = new JLabel(newText + ": ", null, JLabel.RIGHT);
        GridBagConstraints c = new GridBagConstraints();
        c.weightx = 1.0;
        c.fill = GridBagConstraints.BOTH;
        grid.setConstraints(label, c);
        propertyPanel.add(label);
        c.gridwidth = GridBagConstraints.REMAINDER;
        grid.setConstraints(editor, c);
        propertyPanel.add(editor);
    }

    /**
     * Action to show the About dialog
     *
     * @author toedter_k
     */
    class AboutAction extends AbstractAction {
        private JCalendarDemo demo;

        /**
         * Constructor for the AboutAction object
         *
         * @param demo Description of the Parameter
         */
        AboutAction(JCalendarDemo demo) {
            super("About...");
            this.demo = demo;
        }

        /**
         * Description of the Method
         *
         * @param event Description of the Parameter
         */
        public void actionPerformed(ActionEvent event) {
            JOptionPane.showMessageDialog(demo,
                "JCalendar Demo\nVersion 1.2.1\n\nKai Toedter\nkai@toedter.com\nwww.toedter.com",
                "About...", JOptionPane.INFORMATION_MESSAGE);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -