我是新来Java
,不知道到底是什么cause.Let我解释问题我试图矩形颜色更改为黑色,但它不工作
我创建一个矩形,和它的工作,然后我想改变它的颜色为黑色的一些测试,但似乎不工作以下是我的代码。 当我从paintComponent
本身调用的方法,然后它的工作,但如果我从任何其他方法做同样的事情,那么它不会改变颜色。我试图调用方法重绘也不过还是一样
public class Meme extends JPanel {
Rectangle2D.Float myRect = new Rectangle2D.Float(90, 90, 90, 90);
Graphics2D graphics2d;
public void DRAW() {
graphics2d.setColor(new Color(0, 0, 200));
graphics2d.fill(myRect);
}
public void ChangeColour() {
System.out.println("Called");
graphics2d.setPaint(Color.BLACK);
System.out.println("Called2");
graphics2d.fill(myRect);
System.out.println("Called3");
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
graphics2d = (Graphics2D) g;
graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
graphics2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
DRAW();
}
}
按钮点击监听方法
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
meme1.ChangeColour();
}
你需要调用changecolor函数 –
是的,我从paintComonent调用它的工作..但是,当我从另一个函数调用该方法时不起作用 –
所有的绘画都应该在'paintComponent'方法内完成。这个想法是你改变状态(即颜色)并调用'repaint'来触发新的paint pass – MadProgrammer