gpt4 book ai didi

java - 清除 JPanel 或 JFrame

转载 作者:行者123 更新时间:2023-11-29 09:56:24 24 4
gpt4 key购买 nike

不使用 super.paintComponent(g); 我还能清除我的 Jpanel 或 Jframe 屏幕吗?我在 JPanel 上绘制了一些形状,当用户在不使用此方法的情况下按下右键单击时,我想清除所有绘图。或者我说是否有 super.paintCompenent(g); 方法或类似 clrscr(); In Java 的替代方法。

编辑

  public void mousePressed(MouseEvent e) {
super.paintComponents(null); //i want to use this method here?? how can i?
if(e.isPopupTrigger())
{
s=e.getX();
as=e.getY();
try {
Thread.sleep(10L);
} catch (InterruptedException ex) {
Logger.getLogger(animate.class.getName()).log(Level.SEVERE, null, ex);
}
p.repaint();
}
}

我画的是这样的形状

public class mypanel extends JPanel {

@Override
public void paintComponent(Graphics g)
{

super.paintComponent(g);
Graphics2D g2=(Graphics2D)g ;

Color[] c = {Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW,
Color.MAGENTA, Color.WHITE, Color.ORANGE, Color.PINK};
for(int i=0; i<8; ++i){
g2.setColor(c[i]);
int start_angle=i*45;
g2.fillArc(mx-100, my-100, 200, 200, start_angle,45);



}

最佳答案

mre 解决方案实际上是一个好主意,但是如果出现另一个重绘,您可能会遇到问题(因为您移动了 JFrame,因为您调整了它的大小,因为另一个窗口出现在它上面然后离开,等等......)

或者,您可以使用类似这样的方法来使更改永久化:

public class mypanel extends JPanel {

private boolean draw = true;

@Override
public void paintComponent(Graphics g)
{

super.paintComponent(g);
if (draw) {
Graphics2D g2=(Graphics2D)g ;

Color[] c = {Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW,
Color.MAGENTA, Color.WHITE, Color.ORANGE, Color.PINK};
for(int i=0; i<8; ++i){
g2.setColor(c[i]);
int start_angle=i*45;
g2.fillArc(mx-100, my-100, 200, 200, start_angle,45);
}
}

public void setDraw(boolean draw) {
this.draw = draw;
repaint();
}
}

然后您可以通过调用 mypanel.setDraw(boolean) 简单地在 JPanel 中绘制或不绘制

关于java - 清除 JPanel 或 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10064425/

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