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

📄 drawingprogram.java

📁 书籍"Java_面向事件编程"的附带光盘代码
💻 JAVA
字号:
import objectdraw.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;// This program demonstrates the use of the listener interface, and its use // with gui components.  This version includes buttons.public class DrawingProgram extends WindowController implements ActionListener{       // Width of border around drawing area    private static final int BORDER_X = 10;    private static final int BORDER_Y = 10;        // Default size when we create a new shape    private static final int DEFAULT_SIZE = 50;        // Initial Location of shapes to be drawn    private Location defaultLocation;        // Buttons determining which kind of object is drawn    private JButton framedSquareButton, framedCircleButton, filledSquareButton;        // The menu determining which color the object should be    private JComboBox colorMenu;        // boundary of area drawing in    private FramedRect drawingArea;        // The variable to hold the last shape created    private DrawableInterface newShape;        // Used to support the usual dragging algorithm    private boolean dragging;    private Location lastMouse;        /*      * Draws the program with the buttons and a blank drawing area     */    public void begin() {        // Create buttons for selecting figures        framedSquareButton = new JButton("FramedSquare");        framedCircleButton = new JButton("FramedCircle");        filledSquareButton = new JButton("FilledSquare");                framedSquareButton.addActionListener(this);        framedCircleButton.addActionListener(this);        filledSquareButton.addActionListener(this);                // create menu for selecting colors        colorMenu = new JComboBox();        colorMenu.addItem("Red");        colorMenu.addItem("Blue");        colorMenu.addItem("Green");        colorMenu.addItem("Yellow");                colorMenu.addActionListener(this);                JPanel bottomPanel = new JPanel();        bottomPanel.setLayout(new GridLayout(2, 1));        JPanel buttonPanel = new JPanel();        buttonPanel.add(framedSquareButton);        buttonPanel.add(framedCircleButton);        buttonPanel.add(filledSquareButton);        bottomPanel.add(buttonPanel);        bottomPanel.add(colorMenu);        Container contentPane = getContentPane();        contentPane.add(bottomPanel, BorderLayout.SOUTH);        contentPane.validate();                // Draw the drawing area        drawingArea =            new FramedRect(                           BORDER_X,                           BORDER_Y,                           canvas.getWidth() - 2 * BORDER_X,                           canvas.getHeight() - 2 * BORDER_Y,                           canvas);                defaultLocation = new Location((canvas.getWidth() - DEFAULT_SIZE) / 2, (canvas.getHeight() - DEFAULT_SIZE) / 2);    }        /**     * change newShape to color on color menu     * Assumes newShape not null     */    private void setColor() {        Object colorChoiceString = colorMenu.getSelectedItem();        if (colorChoiceString.equals("Red")) {            newShape.setColor(Color.red);        } else if (colorChoiceString.equals("Blue")) {            newShape.setColor(Color.blue);        } else if (colorChoiceString.equals("Green")) {            newShape.setColor(Color.green);        } else if (colorChoiceString.equals("Yellow")) {            newShape.setColor(Color.yellow);        }    }            /*      * When the user clicks the button on a shape button, create that shape.     */    public void actionPerformed(ActionEvent evt) {        // Determine the appropriate button pushed        if (evt.getSource() == framedSquareButton) {            newShape = new FramedRect(defaultLocation, DEFAULT_SIZE, DEFAULT_SIZE, canvas);        } else if (evt.getSource() == framedCircleButton) {            newShape = new FramedOval(defaultLocation, DEFAULT_SIZE, DEFAULT_SIZE, canvas);        } else if (evt.getSource() == filledSquareButton) {            newShape = new FilledRect(defaultLocation, DEFAULT_SIZE, DEFAULT_SIZE, canvas);        }        setColor();    }            /*      * Drag the shape with the mouse.  Notice that it doesn't matter what     * kind of shape (FramedRect, FilledOval, etc.) we have.     */    public void onMouseDrag(Location loc) {        if (dragging) {            newShape.move(loc.getX() - lastMouse.getX(), loc.getY() - lastMouse.getY());            lastMouse = loc;        }    }        /*      * Start a drag     */    public void onMousePress(Location loc) {        if (newShape != null && newShape.contains(loc)) {            dragging = true;            lastMouse = loc;        }    }        /*      * Stop a drag     */    public void onMouseRelease(Location arg0) {        dragging = false;    }    }

⌨️ 快捷键说明

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