1、首先打开java编译软件,引入爱心代码编程。
成都创新互联公司专业为企业提供盘龙网站建设、盘龙做网站、盘龙网站设计、盘龙网站制作等企业网站建设、网页设计与制作、盘龙企业网站模板建站服务,十余年盘龙做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
2、其次打开图面编译,选择编辑颜色。
3、最后在该代码编程中输入需要添加的颜色即可。
主类不需要更改,只需改一下Circle.java我呢见
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import javax.swing.JPanel;
public class Circle extends JPanel
{
public void paintComponent( Graphics g )
{
super.paintComponent( g );
int numFlag=0;
for ( int topLeft = 0; topLeft 80; topLeft += 10 )
{
numFlag++;
if(numFlag%2==0)
g.setColor(Color.blue);//改变颜色
else
g.setColor(Color.white);//改变颜色
int radius = 160 - ( topLeft * 2 );
g.fillOval(topLeft + 10, topLeft + 25, radius, radius);//这是画圆
//g.fillArc( topLeft + 10, topLeft + 25, radius, radius, 0, 360 );
}
this.setBackground(Color.red);
}
}
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;
}
}
只需把g.drawOval(...)改成g.setColor(Color.RED); g.fillOval(..)就行了,drawOval是只画不填充,而fillOval是画并且填充,填充的颜色是由g.setColor()方法的参数决定的。
可以用扫描线种子算法
扫描线种子填充算法的基本过程如下:当给定种子点(x, y)时,首先分别向左和向右两个方向填充种子点所在扫描线上的位于给定区域的一个区段,同时记下这个区段的范围[xLeft, xRight],然后确定与这一区段相连通的上、下两条扫描线上位于给定区域内的区段,并依次保存下来。反复这个过程,直到填充结束。
扫描线种子填充算法可由下列四个步骤实现:
(1) 初始化一个空的栈用于存放种子点,将种子点(x, y)入栈;
(2) 判断栈是否为空,如果栈为空则结束算法,否则取出栈顶元素作为当前扫描线的种子点(x, y),y是当前的扫描线;
(3) 从种子点(x, y)出发,沿当前扫描线向左、右两个方向填充,直到边界。分别标记区段的左、右端点坐标为xLeft和xRight;
(4) 分别检查与当前扫描线相邻的y - 1和y + 1两条扫描线在区间[xLeft, xRight]中的像素,从xLeft开始向xRight方向搜索,若存在非边界且未填充的像素点,则找出这些相邻的像素点中最右边的一个,并将其作为种子点压入栈中,然后返回第(2)步;
本来是在drawcomponent这个里边使用setBackground,你想啊drawcomponent是继承JComponent的所以它是一个容器,所以它同样有setBackground这个方法来设置它的背景颜色
但是因为你在设置它本身为一个画布,因为你用了paintComponent(Graphics g)
这个方法,所以setBackground这个方法即使你用了也看不到很大的效果。但是有一种取代的方法就是在paintComponent(Graphics g)方法中首先就用Graphics 所含有的方法g.setColor(Color.black);来设置背景颜色再用g.fillRect(0, 0, this.getWidth(), this.getHeight());来填满整个容器,这就达到了设置背景目的。然后你再g.setColor(其他颜色);来绘制其它图形.
具体代码:(在你以上的代码上修改了点)
public void paintComponent(Graphics g)
{
Graphics2D g2=(Graphics2D)g;
g.setColor(Color.black);//这里设置背景颜色
g.fillRect(0, 0, this.getWidth(), this.getHeight());//这里填充背景颜色
double x=100;
double y=100;
double w=200;
double h=150;
Rectangle2D rect=new Rectangle2D.Double(x,y,w,h);
g2.setPaint(Color.white);//这里是你设置其他笔触颜色
g2.draw(rect);
Ellipse2D ellipse=new Ellipse2D.Double();
ellipse.setFrame(rect);
g2.draw(ellipse);
Point2D p1=new Point2D.Double(x-40,y-30);
Point2D p2=new Point2D.Double(x+w+40,y+h+30);
g2.draw(new Line2D.Double(p1,p2));
double centerx=rect.getCenterX();
double centery=rect.getCenterY();
double radius=150;
Ellipse2D circle=new Ellipse2D.Double();
circle.setFrameFromCenter(centerx,centery,centerx+125,centery+125);
g2.draw(circle);
}
测试结果图