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

📄 scrollablepicture.java

📁 java tutorial.sun公司官方出品。java入门书籍。最新版
💻 JAVA
字号:
/* * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * *   - Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. * *   - Redistributions in binary form must reproduce the above copyright *     notice, this list of conditions and the following disclaimer in the *     documentation and/or other materials provided with the distribution. * *   - Neither the name of Sun Microsystems nor the names of its *     contributors may be used to endorse or promote products derived *     from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package components;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;/* ScrollablePicture.java is used by ScrollDemo.java. */public class ScrollablePicture extends JLabel                               implements Scrollable,                                          MouseMotionListener {    private int maxUnitIncrement = 1;    private boolean missingPicture = false;    public ScrollablePicture(ImageIcon i, int m) {        super(i);        if (i == null) {            missingPicture = true;            setText("No picture found.");            setHorizontalAlignment(CENTER);            setOpaque(true);            setBackground(Color.white);        }        maxUnitIncrement = m;        //Let the user scroll by dragging to outside the window.        setAutoscrolls(true); //enable synthetic drag events        addMouseMotionListener(this); //handle mouse drags    }    //Methods required by the MouseMotionListener interface:    public void mouseMoved(MouseEvent e) { }    public void mouseDragged(MouseEvent e) {        //The user is dragging us, so scroll!        Rectangle r = new Rectangle(e.getX(), e.getY(), 1, 1);        scrollRectToVisible(r);    }    public Dimension getPreferredSize() {        if (missingPicture) {            return new Dimension(320, 480);        } else {            return super.getPreferredSize();        }    }    public Dimension getPreferredScrollableViewportSize() {        return getPreferredSize();    }    public int getScrollableUnitIncrement(Rectangle visibleRect,                                          int orientation,                                          int direction) {        //Get the current position.        int currentPosition = 0;        if (orientation == SwingConstants.HORIZONTAL) {            currentPosition = visibleRect.x;        } else {            currentPosition = visibleRect.y;        }        //Return the number of pixels between currentPosition        //and the nearest tick mark in the indicated direction.        if (direction < 0) {            int newPosition = currentPosition -                             (currentPosition / maxUnitIncrement)                              * maxUnitIncrement;            return (newPosition == 0) ? maxUnitIncrement : newPosition;        } else {            return ((currentPosition / maxUnitIncrement) + 1)                   * maxUnitIncrement                   - currentPosition;        }    }    public int getScrollableBlockIncrement(Rectangle visibleRect,                                           int orientation,                                           int direction) {        if (orientation == SwingConstants.HORIZONTAL) {            return visibleRect.width - maxUnitIncrement;        } else {            return visibleRect.height - maxUnitIncrement;        }    }    public boolean getScrollableTracksViewportWidth() {        return false;    }    public boolean getScrollableTracksViewportHeight() {        return false;    }    public void setMaxUnitIncrement(int pixels) {        maxUnitIncrement = pixels;    }}

⌨️ 快捷键说明

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