jam*_*mes 1 java graphics swing drawing
没有使用super.paintComponent(g);可以我仍然清除我的Jpanel或Jframe屏幕?我在JPanel上绘制了一些形状,我希望在用户按下右键而不使用此方法时清除所有绘图.或者我说是在Java中有任何替代的super.paintCompenent(g)方法或方法clrscr();.
编辑
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在画这样的形状
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);
}
Run Code Online (Sandbox Code Playgroud)
MRE解决方案实际上是一个好主意,但如果另一重绘进来你可能有问题,(因为你移动的JFrame,因为你调整它,因为另一个窗口出现在它的上面,然后leavs,等...)
或者,你可以使用这样的东西来永久改变:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以通过调用mypanel.setDraw(boolean)在你的JPanel simlpy中绘制或不绘图