如何在图标图标上绘制黑色矩形?

时间:2015-05-17 18:41:28

标签: java image graphics

在我的应用程序中我在背景中有一个十字路口图片,我想在它的顶部绘制交通灯(黑色矩形有3个圆圈) 问题是,我根本看不到矩形,好像它是在图像下面的东西。如果我切换项目的绘制顺序,我会得到所有黑色图像。

你知道如何解决这个问题吗?我不熟悉图形并搜索类似的问题,但没有人帮助我。 谢谢。

public MainFrame() throws HeadlessException {
    super("semafor");        
    crossroad = new ImageIcon("cross.png");

    initFrame();
    initComponents();

    sem1 = new Semafor(true, 100, 100);
    add(sem1);

    repaint();
    setVisible(true);
}

//here I paint the image
@Override
public void paint(Graphics g) {
    super.paint(g);
    g.drawImage(crossroad.getImage(), 0, 45, this);

}

//and in class Semafor i paint the actual traffic lights

@Override
public void paint(Graphics g) {
    g.setColor(Color.black);
    g.fillRect(0, 0, getWidth(), getHeight());
    g.setColor(Color.darkGray);

    //and then the circles
}

1 个答案:

答案 0 :(得分:-1)

我注意到的第一件事是你正在调用<unknown>.getWidth()<unknown>.getHeight()来获取矩形大小。如果它覆盖整个图像,这表明它正在从绘制的面板上获得宽度和高度。

简单的堆栈跟踪,

(new Exception).printStackTrace();

Thread.dumpStack();

会告诉你的。您还可以通过System.out调用来查询宽度和高度,以验证您是否获得了您期望的值,或者,如果这确实失控,请学习使用JUnit和{{1}声明。老实说,看起来你只是意外地调用了错误的方法。