JAVA学习---绘制图形

来源:互联网 发布:windows命令行列出文件 编辑:程序博客网 时间:2024/05/19 19:56
import java.awt.GridLayout;import javax.swing.JFrame;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.RECTANGLE, false));add(new FigurePanel(FigurePanel.ROUND_RECTANGLE, true));add(new FigurePanel(FigurePanel.OVAL, true));}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubTestFigurePanel frame = new TestFigurePanel();frame.setSize(400,300);frame.setTitle("TestFigurePanel");frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}
import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import javax.swing.JPanel;public class FigurePanel extends JPanel {// define constantspublic 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;public FigurePanel(){}public FigurePanel(int type){this.type = type;}public FigurePanel(int type, boolean filled){this.type = type;this.filled = filled;}protected void paintComponent(Graphics g){super.paintComponents(g);int width = getWidth();int height = getHeight();System.out.println("width = " + width + " heigth = "+ height);System.out.println("width = " + ((int)width*0.1) + " heigth = "+ height);switch (type){case LINE:{g.setColor(Color.BLACK);g.drawLine(10, 10, width - 10, height - 10);g.drawLine(width - 10, 10, 10, height - 10);}case RECTANGLE:{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));}}case ROUND_RECTANGLE:{g.setColor(Color.RED);if (filled){g.fillRoundRect((int)(0.1*width), (int)(0.1 * height), (int)(0.8 *width), (int)(0.8*height), 40, 40);}else{g.drawRoundRect((int)(0.1*width), (int)(0.1 * height), (int)(0.8 *width), (int)(0.8*height), 40, 40);}}case OVAL:{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));}}}}public void setType(int type){this.type = type;}public int getType(){return type;}public void setFilled(boolean filled){this.filled = filled;repaint();}public boolean isFilled(){return filled;}public Dimension getPreferredSize(){return new Dimension(80, 80);}}