gpt4 book ai didi

java - 如何使用 repaint 调用 java PaintComponent

转载 作者:行者123 更新时间:2023-12-02 05:14:32 24 4
gpt4 key购买 nike

this video drawing() 方法在主类中调用。当我们在 main 方法中删除 drawing() 时,它仍然会绘制形状。我们怎样才能避免这种情况呢?

形状类:

import java.awt.*;
import javax.swing.*;
public class shapes{
public static void main(String[] args){
JFrame frame = new JFrame("Test");
frame.setVisible(true);
frame.setSize(400,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
draw object = new draw();
frame.add(object);

object.drawing();
}

}

绘图类:

import java.awt.*;
import javax.swing.*;

public class draw extends JPanel{
public void drawing(){
repaint();
}
public void paintComponent(){
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillRect(10,15,100,100);
}
}

最佳答案

代码存在一些小问题,但我认为这只是用于演示目的的一小段代码。详情请查看Performing Custom Painting .

实际上,本教程也可以回答您的问题,但总结一下:

每当需要重新绘制组件时,“操作系统”都会自动调用 paintComponent 方法。对 repaint() 的调用只是告诉操作系统尽快再次调用 paintComponent。因此,您可以调用repaint()来确保您取消的内容尽快出现在屏幕上。

如果您明确想要启用/禁用某些绘制操作,则无法通过阻止调用 paintComponent 来影响此操作。无论如何它都会被调用。相反,您将引入一些标志或状态来指示是否应该绘制某些内容。

在您的示例中,这大致可以这样完成:

import java.awt.*;
import javax.swing.*;

public class Draw extends JPanel{
private boolean paintRectangle = false;

void setPaintRectangle(boolean p) {
paintRectangle = p;
repaint();
}

@Override
public void paintComponent(){
super.paintComponent(g);

if (paintRectangle) {
g.setColor(Color.BLUE);
g.fillRect(10,15,100,100);
}
}
}

然后您可以调用 setPaintRectangle 方法来指示是否应绘制矩形。

关于java - 如何使用 repaint 调用 java PaintComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27078002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com