您的位置:首页 > 编程语言 > Java开发

Graphics

2014-05-10 09:04 260 查看
import java.awt.*;

import javax.swing.*;

import javax.swing.border.LineBorder;

public class TestFigurePanel extends JFrame {

    public TestFigurePanel () {

        setLayout(new GridLayout(2, 3, 5, 5));

        add(new FigurePanel(FigurePanel.LINE));

        add(new FigurePanel(FigurePanel.RECTANGLE));

        add(new FigurePanel(FigurePanel.ROUND_RECTANGLE));

        add(new FigurePanel(FigurePanel.OVAL));

        add(new FigurePanel(FigurePanel.RECTANGLE, true));

        add(new FigurePanel(FigurePanel.ROUND_RECTANGLE, true));

    }

    

    public static void main(String[] args) {

        TestFigurePanel frame = new TestFigurePanel();

        frame.setTitle("TestFigurePanel");

        frame.setSize(400, 200);

        frame.setLocationRelativeTo(null); //Center the frame

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setVisible(true);

    }

}

class FigurePanel extends JPanel {

    // Define the constants

    public static final int LINE = 1;

    public static final int RECTANGLE = 2;

    public static final int ROUND_RECTANGLE = 3;

    public static final int OVAL = 4;

    

    private int type = 1;

    private boolean filled = false;

    

    /** Construct a default FigurePanel */

    public FigurePanel() {

        

    }

    

    /** Construct a FigurePanel with the specified type */

    public FigurePanel(int type) {

        this.type = type;

    }

    

    /** Construct a FigurePanel with the specified type and filled */

    public FigurePanel(int type, boolean filled) {

        this.type = type;

        this.filled = filled;

    }

    

    /** Draw a figure on the panel */

    protected void paintComponent(Graphics g) {

        super.paintComponent(g);

        

        int width = getWidth();

        int height = getHeight();

        

        switch(type) {

        case LINE: // Display two cross lines

            setBorder(new LineBorder(Color.BLACK));

            g.setColor(Color.BLACK);

            g.drawLine((int)(0.1 * width), (int)(0.1 * height), (int)(0.9 * width), (int)(0.9 * height));

            g.drawLine((int)(0.1 * width), (int)(0.9 * height), (int)(0.9 * width), (int)(0.1 * height));

            break;

            

        case RECTANGLE: // Display a rectangle

            setBorder(new LineBorder(Color.BLUE));

            g.setColor(Color.BLUE);

            if(filled)

                g.fillRect((int)(0.1 * width), (int)(0.1 * height) , (int)(0.8 * width), (int)(0.8 *height));

            else

                g.drawRect((int)(0.1 * width), (int)(0.1 * height) , (int)(0.8 * width), (int)(0.8 *height));

            break;

        

        case ROUND_RECTANGLE: // Display a round-cornered rectangle

            setBorder(new LineBorder(Color.RED));

            g.setColor(Color.RED);

            if(filled)

                g.fillRoundRect((int)(0.1 * width), (int)(0.1 * height) , (int)(0.8 * width), (int)(0.8 *height),

                        (int)(0.2 * width), (int)(0.2 * height));

            else

                g.drawRoundRect((int)(0.1 * width), (int)(0.1 * height) , (int)(0.8 * width), (int)(0.8 *height),

                        (int)(0.2 * width), (int)(0.2 * height));

            break;

            

        case OVAL: // Display an oval

            setBorder(new LineBorder(Color.BLACK));

            g.setColor(Color.BLACK);

            if(filled)

                g.fillOval((int)(0.1 * width), (int)(0.1 * height) , (int)(0.8 * width), (int)(0.8 *height));

            else

                g.drawOval((int)(0.1 * width), (int)(0.1 * height) , (int)(0.8 * width), (int)(0.8 *height));

        }

    }

    

    /** Return figure type */

    public int getType() {

        return type;

    }

    

    /** Set a new figure type */

    public void setType(int type) {

        this.type = type;

        repaint();

    }

    

    /** Check if the figure is filled */

    public boolean isFilled() {

        return filled;

    }

    

    /** Set a new filled property */

    public void setFilled(boolean filled) {

        this.filled = filled;

        repaint();

    }

    

    /** Specify preferred size */

    public Dimension getPreferredSize() {

        return new Dimension(80, 80);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Graphics