java 语言程序设计中的题目,单单画了一个图形,为何?

胖子吴 2016-07-27 10:01:51

import javax.swing.*;
import java.awt.*;
public class TestFigurePaint extends JFrame{

TestFigurePaint(){
setLayout(new GridLayout(2,3,5,5));
add(new FigurePaint(FigurePaint.LINE));
add(new FigurePaint(FigurePaint.RECTANGLE));
add(new FigurePaint(FigurePaint.ROUND_RECTANGLE));
add(new FigurePaint(FigurePaint.OVAL));
add(new FigurePaint(FigurePaint.RECTANGLE,true));
add(new FigurePaint(FigurePaint.ROUND_RECTANGLE,true));
}
public static void main(String[] args){

TestFigurePaint frame = new TestFigurePaint();
frame.setSize(800,400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}
class FigurePaint extends JPanel{

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;
private boolean isFilled;

public FigurePaint(int type){
this.type = type;
}
public FigurePaint(int type,boolean isFilled){
this.type = type;
this.isFilled = isFilled;
}

protected void paintComponent(Graphics g){

int width = getWidth();
int height = getHeight();
System.out.println(type + " " + width + " " + 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);
break;
case RECTANGLE:
g.setColor(Color.BLUE);
if(isFilled)
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:
g.setColor(Color.RED);
if(isFilled)
g.fillRoundRect((int)0.1*width, (int)0.1*height, (int)0.8*width, (int)0.8*height,20,20);
else
g.drawRoundRect((int)0.1*width, (int)0.1*height, (int)0.8*width, (int)0.8*height,20,20);
break;
case OVAL:
g.setColor(Color.BLACK);
if(isFilled)
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);
break;
}
}
// public Dimension getPreferredSize(){
// return new Dimension(80,80);
// }
}
...全文
128 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
OPPPPOP 2016-07-27
  • 打赏
  • 举报
回复
(int)0.1*width 这种代表 把0.1转成 int 然后乘以 width, 0*width; 应该是 (int)(0.1*width)

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧