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

📄 scrolldemo2.java

📁 这是一个英文版的《Java程序设计与问题解决》现在好多大学都当成教材
💻 JAVA
字号:
/* * This code is based on an example provided by John Vella, * a tutorial reader. */import javax.swing.*;import javax.swing.event.MouseInputAdapter;import java.awt.*;import java.awt.event.*;import java.util.*;/* ScrollDemo2.java requires no other files. */public class ScrollDemo2 extends JPanel                         implements MouseListener {    private Dimension area; //indicates area taken up by graphics    private Vector circles; //coordinates used to draw graphics    private JPanel drawingPane;    private final Color colors[] = {        Color.red, Color.blue, Color.green, Color.orange,        Color.cyan, Color.magenta, Color.darkGray, Color.yellow};    private final int color_n = colors.length;    public ScrollDemo2() {        setOpaque(true);        area = new Dimension(0,0);        circles = new Vector();        //Set up the instructions.        JLabel instructionsLeft = new JLabel(                        "Click left mouse button to place a circle.");        JLabel instructionsRight = new JLabel(                        "Click right mouse button to clear drawing area.");        JPanel instructionPanel = new JPanel(new GridLayout(0,1));        instructionPanel.add(instructionsLeft);        instructionPanel.add(instructionsRight);        //Set up the drawing area.        drawingPane = new DrawingPane();        drawingPane.setBackground(Color.white);        drawingPane.addMouseListener(this);        //Put the drawing area in a scroll pane.        JScrollPane scroller = new JScrollPane(drawingPane);        scroller.setPreferredSize(new Dimension(200,200));        //Layout this demo.        setLayout(new BorderLayout());        add(instructionPanel, BorderLayout.PAGE_START);        add(scroller, BorderLayout.CENTER);    }    /** The component inside the scroll pane. */    public class DrawingPane extends JPanel {        protected void paintComponent(Graphics g) {            super.paintComponent(g);            Rectangle rect;            for (int i = 0; i < circles.size(); i++) {                rect = (Rectangle)circles.elementAt(i);                g.setColor(colors[(i % color_n)]);                g.fillOval(rect.x, rect.y, rect.width, rect.height);            }        }    }    //Handle mouse events.    public void mouseReleased(MouseEvent e) {        final int W = 100;        final int H = 100;        boolean changed = false;        if (SwingUtilities.isRightMouseButton(e)) {            //This will clear the graphic objects.            circles.removeAllElements();            area.width=0;            area.height=0;            changed = true;        } else {            int x = e.getX() - W/2;            int y = e.getY() - H/2;            if (x < 0) x = 0;            if (y < 0) y = 0;            Rectangle rect = new Rectangle(x, y, W, H);            circles.addElement(rect);            drawingPane.scrollRectToVisible(rect);            int this_width = (x + W + 2);            if (this_width > area.width) {                area.width = this_width; changed=true;            }            int this_height = (y + H + 2);            if (this_height > area.height) {                area.height = this_height; changed=true;            }        }        if (changed) {            //Update client's preferred size because            //the area taken up by the graphics has            //gotten larger or smaller (if cleared).            drawingPane.setPreferredSize(area);            //Let the scroll pane know to update itself            //and its scrollbars.            drawingPane.revalidate();        }        drawingPane.repaint();    }    public void mouseClicked(MouseEvent e){}    public void mouseEntered(MouseEvent e){}    public void mouseExited(MouseEvent e){}    public void mousePressed(MouseEvent e){}    public static void main(String[] args) {        //Make sure we have nice window decorations.        JFrame.setDefaultLookAndFeelDecorated(true);        //Create and set up the window.        JFrame frame = new JFrame("ScrollDemo2");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        frame.setContentPane(new ScrollDemo2());        //Display the window.        frame.pack();        frame.setVisible(true);    }}

⌨️ 快捷键说明

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