Java - 颜色矩形

时间:2016-01-13 16:01:23

标签: java swing

import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Color;
public class DrawPanel extends JPanel {
    public void paintComponent(Graphics g) {
        int height = getHeight();
        int width = getWidth();
        g.drawRect(350, 510, 110, 170);
        g.drawRect(470, 510, 110, 170);
        g.drawRect(590, 510, 110, 170);
        g.drawRect(710, 510, 110, 170);
        g.drawRect(830, 510, 110, 170);
        g.drawRect(350, 30, 110, 170);
        g.drawRect(470, 30, 110, 170);
        g.drawRect(590, 30, 110, 170);
        g.drawRect(710, 30, 110, 170);
        g.drawRect(830, 30, 110, 170);
        g.setColor(Color.RED);
        g.drawRect(110, 450, 110, 170);
        g.drawRect(110, 60, 110, 170);
    }
}

我需要为每个Rectangle(我的意思是在Rectangle中)着色红色,但是使用这个g.setColor(Color.RED);我只能为Rectanlge的外部部分着色

4 个答案:

答案 0 :(得分:5)

来自JavaDocs

drawRect()

  

绘制指定矩形的轮廓。矩形的左右边缘为x和x +宽度。顶部和底部边缘位于y和y +高度。使用图形上下文的当前颜色绘制矩形。

这就是你需要使用fillRect

的原因
  

填充指定的矩形。矩形的左右边缘位于x和x +宽度-1处。顶部和底部边缘位于y和y +高度-1处。生成的矩形覆盖宽度为像素宽的区域宽度和高度像素高。使用图形上下文的当前颜色填充矩形。

上一条评论:And what about if i want to have the half rectangle blue and the rest red? What should i do then ?

画出2个矩形,一个在另一个开始的地方结束,如:

g.setColor(Color.BLUE);
g.fillRect(50, 50, 50, 50);
g.setColor(Color.RED);
g.fillRect(100, 50, 50, 50);

我没有测试过上面的代码,但是你明白了这一点:)

答案 1 :(得分:0)

g.drawRect()仅绘制矩形的边框。您可能应该使用用纯色填充矩形的g.fillRect()JavaDoc

答案 2 :(得分:0)

试试这个:

g.fillRect(x, y, width, height)

说明here

答案 3 :(得分:0)

使用fillRect()填充矩形区域,而不只是绘制矩形。