formchoicewidgetfactory.java

来自「Java生成PDF Java生成PDF Java生成PDF」· Java 代码 · 共 345 行 · 第 1/2 页

JAVA
345
字号
                            String value = comp.getText();                            if (docpanel.getJSManager().runEventFieldValidate(docpanel, widget, value, false, false, "", "", false)) {                                Map opts = field.getOptions();                                if (opts.containsKey(value)) value = (String)opts.get(value);                                field.setValue(value);                                FormTextWidgetFactory.runOtherChange(docpanel, widget);                            } else {                                ok = false;                            }                        }                        if (ok) {                            js.runEventFieldFormat(docpanel, widget, 1, false);                            js.runEventFieldBlur(docpanel, widget, false, false);                            field.rebuild();                            docpanel.redraw(field);                        }                        comp.putClientProperty("bfo.HasChanged", null);                    }                    if (ok) {                        comp.setBorder(null);                        comp.setBackground(new Color(0,0,0,0));                        comp.setForeground(new Color(0,0,0,0));                        pagepanel.repaint();                        comp.putClientProperty("bfo.HasFocus", null);                    } else {                        comp.requestFocus();                    }                }            }        });        comp.addMouseListener(new MouseListener() {            public void mouseEntered(MouseEvent event) {                comp.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));                js.runEventFieldMouseEnter(docpanel, widget, event);            }            public void mouseExited(MouseEvent event) {                comp.setCursor(Cursor.getDefaultCursor());                js.runEventFieldMouseExit(docpanel, widget, event);            }            public void mousePressed(MouseEvent event) {                js.runEventFieldMouseDown(docpanel, widget, event);                menu.show(comp, 0, comp.getHeight());                menu.requestFocus();            }            public void mouseReleased(MouseEvent event) {                js.runEventFieldMouseUp(docpanel, widget, event);            }            public void mouseClicked(MouseEvent event) {            }        });        return comp;    }    private JComponent createMenuComponent(final PagePanel pagepanel, final FormChoice field, final WidgetAnnotation widget) {        final DocumentPanel docpanel = pagepanel.getDocumentPanel();        final JSManager js = docpanel.getJSManager();        final JList comp = new JList() {            public void paintComponent(Graphics g) {                AnnotationComponentFactory.paintComponent(this, "N", g);                super.paintComponent(g);            }        };        comp.setBackground(new Color(0,0,0,0));        comp.setForeground(new Color(0,0,0,0));        comp.setBorder(null);        comp.setToolTipText(widget.getField().getDescription());        comp.setSelectionMode(field.getType()==FormChoice.TYPE_MULTISCROLLABLE ? ListSelectionModel.MULTIPLE_INTERVAL_SELECTION : ListSelectionModel.SINGLE_SELECTION);        comp.addListSelectionListener(new ListSelectionListener() {            public void valueChanged(ListSelectionEvent event) {                int[] oldvals = (int[])comp.getClientProperty("bfo.Selected");                if (oldvals!=null) {                    int[] newvals = comp.getSelectedIndices();                    if (!Arrays.equals(oldvals, newvals)) {                        comp.putClientProperty("bfo.HasChanged", "true");                        int count = 0;                        for (Iterator j = field.getOptions().entrySet().iterator();j.hasNext();count++) {                            Map.Entry e = (Map.Entry)j.next();                            if (count == newvals[newvals.length-1]) {                                String value = field.getValue();                                if (value.indexOf("\n")>0) value = value.substring(0, value.indexOf("\n"));                                String change = (String)e.getKey();                                String changeEx = (String)e.getValue();                                if (js.runEventFieldKeystroke(docpanel, widget, 2, change, changeEx, false, false, false, -1, -1, false, value, false)) {                                    comp.putClientProperty("bfo.Selected", newvals);                                } else {                                    comp.putClientProperty("bfo.Selected", null);                                    comp.setSelectedIndices(oldvals);                                    comp.putClientProperty("bfo.Selected", oldvals);                                }                            }                        }                    }                }            }        });        comp.addFocusListener(new FocusListener() {            public void focusGained(FocusEvent event) {                if (comp.getClientProperty("bfo.HasFocus")==null) {                    comp.putClientProperty("bfo.HasFocus", "true");                    js.runEventFieldFocus(docpanel, widget, false, false);                    float fontsize = widget.getTextStyle().getFontSize();                    if (fontsize==0) fontsize = 12;                    fontsize = fontsize * pagepanel.getDPI() / 72;                    if (fontsize!=comp.getFont().getSize2D()) {                        comp.setFont(comp.getFont().deriveFont(fontsize));                    }                    Map options = field.getOptions();                    Vector v = new Vector(options.size());                    for (Iterator i = options.keySet().iterator();i.hasNext();) {                        v.add(i.next());                    }                    comp.setListData(v);                    int[] selected = field.getSelectedIndices();                    comp.setSelectedIndices(selected);                    comp.putClientProperty("bfo.Selected", selected);                    comp.setBorder(BorderFactory.createEtchedBorder());                    Paint p = widget.getBackgroundStyle().getFillColor();                    comp.setBackground(p!=null && p instanceof Color ? (Color)p : Color.white);                    p = widget.getTextStyle().getFillColor();                    comp.setForeground(p!=null && p instanceof Color ? (Color)p : Color.black);                    comp.repaint();                }            }            public void focusLost(FocusEvent event) {                if (!event.isTemporary() && comp.getClientProperty("bfo.HasFocus")!=null) {                    comp.putClientProperty("bfo.Selected", null);                    if (comp.getClientProperty("bfo.HasChanged")!=null) {                        field.setSelectedIndices(comp.getSelectedIndices());                        FormTextWidgetFactory.runOtherChange(docpanel, widget);                        field.rebuild();                        docpanel.redraw(field);                        comp.putClientProperty("bfo.HasChanged", null);                    }                    js.runEventFieldBlur(docpanel, widget, false, false);                    comp.setBorder(null);                    comp.setBackground(new Color(0,0,0,0));                    comp.setForeground(new Color(0,0,0,0));                    comp.setListData(new Vector());                    pagepanel.repaint();                    comp.putClientProperty("bfo.HasFocus", null);                }            }        });        comp.addMouseListener(new MouseListener() {            public void mouseEntered(MouseEvent event) {                comp.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));                js.runEventFieldMouseEnter(docpanel, widget, event);            }            public void mouseExited(MouseEvent event) {                comp.setCursor(Cursor.getDefaultCursor());                js.runEventFieldMouseExit(docpanel, widget, event);            }            public void mousePressed(MouseEvent event) {                js.runEventFieldMouseDown(docpanel, widget, event);            }            public void mouseReleased(MouseEvent event) {                js.runEventFieldMouseUp(docpanel, widget, event);            }            public void mouseClicked(MouseEvent event) {            }        });        return comp;    }}

⌨️ 快捷键说明

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