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 + -
显示快捷键?