java中怎么对特定的一个圆上色

java中怎么对特定的一个圆上色... java中怎么对特定的一个圆上色 展开
 我来答
雪飞潇潇
2013-11-24 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:870万
展开全部

java swing中指定圆的颜色,最常用的有两种方法

方法一:画圆的时候就指定画笔的颜色,那么画出的颜色就是制定的颜色。

public void paint(Graphics g) {
g.setColor(Color.BLUE);
g.fillOval(50, 8, 50, 50);
}

这种方法的优点: 代码码量少,简洁

                  缺点:指定颜色后,不好修改。不够灵活


方法二:指定构造方法中有一个Color变量。设置get set方法

class MyJPanel extends JPanel{
Color c;
public MyJPanel(Color c) {
this.c = c ;
}
@Override
public void paint(Graphics g) {
g.setColor(c);
g.fillOval(50, 8, 50, 50);
}
public Color getC() {
return c;
}
public void setC(Color c) {
this.c = c;
}
}

方法二的优点:方便灵活,能通过set get方法轻松修改圆圈颜色

                缺点:代码稍多,改变颜色后需要repaint()一下


代码案例供参考

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Circle extends JFrame{
MyJPanel jp;
public Circle() {
jp = new MyJPanel(Color.RED);
this.setLayout(new BorderLayout());
this.add(jp,BorderLayout.CENTER);
this.setBounds(300, 200, 150, 100);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
try {
Thread.sleep(500);
jp.setC(new Color(210,250,0));
jp.repaint();
} catch (InterruptedException e) {

}

}
public static void main(String[] args) {
new Circle();
}

}
class MyJPanel extends JPanel{
Color c;
public MyJPanel(Color c) {
this.c = c ;
}
@Override
public void paint(Graphics g) {
g.setColor(c);
g.fillOval(50, 8, 50, 50);
}
public Color getC() {
return c;
}
public void setC(Color c) {
this.c = c;
}
}
更多追问追答
追问
我意思是在画几个圆的时候只对某一特定圆上色其他圆不变
追答
你的代码在哪里?上述方法能满足你的这个要求。你把你的代码贴出来,我来试着修改
百度网友12ee0fd
2015-08-10 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1957万
展开全部

Java2D里圆使用Ellipse2D的子类Ellipse2D.Double或Ellipse2D.Float创建。

Ellipse2D.Double circle = new Ellipse2D.Double(0,0,20,20);

使用Graphics2D的draw(Shape s)或fill(Shape s)方法绘制。

如果在组件里绘制,在paintComponent方法里:

public void paintComponent(Graphics g){
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D)g;
    // g2d.setRenderingHint(...); 设置一下抗锯齿
    Paint p = g2d.getPaint();
    g2d.setPaint(Color.BLUE);
    g2d.fill(circle);
    g2d.setPaint(p);
}

如果是在BufferedImage上绘制:

BufferedImage bi = ...;
Graphics2D g2d = bi.createGraphics();
g2d.setPaint(Color.BLUE);
g2d.fill(circle); // 实心填充
// g2d.setStroke(new BasicStroke(2f));
// g2d.draw(circle);
g2d.dispose();
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wh猎人
2013-11-24 · TA获得超过1125个赞
知道大有可为答主
回答量:1157
采纳率:89%
帮助的人:662万
展开全部
你要记下你每个圆的信息,比如shapes=new List<Shape>,然后shapes.add(myCircle)。
鼠标点击时,记录下根据鼠标的坐标,检查是在哪个图形中shape.contains()
然后setColor重绘该shape即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式