formbuttonwidgetfactory.java

来自「Java生成PDF Java生成PDF Java生成PDF」· Java 代码 · 共 99 行

JAVA
99
字号
// $Id: FormButtonWidgetFactory.java,v 1.9 2007/11/05 08:36:13 mike Exp $package org.faceless.pdf2.viewer2.feature;import org.faceless.pdf2.viewer2.*;import org.faceless.pdf2.*;import org.faceless.pdf2.Event;import javax.swing.*;import java.awt.*;import java.awt.event.*;/** * Create annotations to handle {@link WidgetAnnotation} objects belonging to a {@link FormButton}. * The name of this feature is "FormButtonWidgetFactory". * <p><i>This code is copyright the Big Faceless Organization. You're welcome to use, modify and distribute it in any form in your own projects, provided those projects continue to make use of the Big Faceless PDF library.</i></p> * @since 2.8 */public class FormButtonWidgetFactory extends AnnotationComponentFactory{    private static FormButtonWidgetFactory instance;    /**     * Return the FormButtonWidgetFactory     */    public static FormButtonWidgetFactory getInstance() {        if (instance==null) instance = new FormButtonWidgetFactory();        return instance;    }    private FormButtonWidgetFactory() {        super("FormButtonWidgetFactory");    }    public boolean matches(PDFAnnotation annot) {        return annot instanceof WidgetAnnotation && ((WidgetAnnotation)annot).getField() instanceof FormButton;    }    public JComponent createComponent(final PagePanel pagepanel, PDFAnnotation annot) {;        final WidgetAnnotation widget = (WidgetAnnotation)annot;        final DocumentPanel docpanel = pagepanel.getDocumentPanel();        final FormButton field = (FormButton)widget.getField();        final JComponent comp = new JPanel() {            public void paintComponent(Graphics g) {                 String state = (String)getClientProperty("state");                 if (state==null) state = "N";                 AnnotationComponentFactory.paintComponent(this, state, g);                 if (isFocusOwner()) {                     ((Graphics2D)g).setStroke(new BasicStroke(1, 0, 0, 1, new float[] { 1, 1 }, 0));                     g.setColor(Color.gray);                     g.drawRect(2, 2, getWidth()-6, getHeight()-6);                 }            }        };        comp.setOpaque(false);        if (!field.isReadOnly()) {            comp.setToolTipText(field.getDescription());            comp.addMouseListener(new MouseListener() {                public void mouseEntered(MouseEvent event) {                    comp.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));                    docpanel.getJSManager().runEventFieldMouseEnter(docpanel, widget, event);                    comp.putClientProperty("state", "R");                    comp.repaint();                }                public void mouseExited(MouseEvent event) {                    comp.setCursor(Cursor.getDefaultCursor());                    docpanel.getJSManager().runEventFieldMouseExit(docpanel, widget, event);                    comp.putClientProperty("state", "N");                    comp.repaint();                }                public void mousePressed(MouseEvent event) {                    comp.putClientProperty("state", "D");                    comp.grabFocus();                    docpanel.getJSManager().runEventFieldMouseDown(docpanel, widget, event);                    comp.repaint();                }                public void mouseReleased(MouseEvent event) {                    docpanel.getJSManager().runEventFieldMouseUp(docpanel, widget, event);                    comp.putClientProperty("state", "R");                    comp.repaint();                }                public void mouseClicked(MouseEvent event) {                }            });            comp.addFocusListener(new FocusListener() {                public void focusGained(FocusEvent event) {                    comp.repaint();                    docpanel.getJSManager().runEventFieldFocus(docpanel, widget, false, false);                }                public void focusLost(FocusEvent event) {                    comp.repaint();                    docpanel.getJSManager().runEventFieldBlur(docpanel, widget, false, false);                }            });        }        FormTextWidgetFactory.createOtherChange(docpanel, field);        return comp;    }}

⌨️ 快捷键说明

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