📄 bouncethread.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.*;
public class BounceThread
{
public static void main(String []args)
{
JFrame frame=new BounceThreadFrame();
frame.show();
}
}
class BounceThreadFrame extends JFrame
{
public BounceThreadFrame()
{
setSize(300,200);
setTitle("弹求");
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);}
});
Container contentPane=getContentPane();
canvas=new JPanel();
contentPane.add(canvas,"Center");
JPanel p=new JPanel();
addButton(p,"新建",new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{b=new Ball(canvas,Color.black);
b.start();
}
});
addButton(p,"高优先级",new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
b=new Ball(canvas,Color.red);
b.setPriority(Thread.NORM_PRIORITY+2);
b.start();
}
});
addButton(p,"唤起",new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
b.resume();
}
});
addButton(p,"Close",new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
Thread c1=Thread.currentThread() ;
System.out.println("第"+c1.getName());
b.suspend();
}
});
contentPane.add(p,"South");
}
public void addButton (Container c,String title,ActionListener a)
{
JButton b=new JButton(title);
c.add(b);
b.addActionListener(a);
}
private JPanel canvas;
Ball b;
}
class Ball extends Thread
{
public Ball(JPanel b,Color c)
{
box=b;
i=n++;
color =c;
}
public void draw()
{
Graphics g=box.getGraphics();
g.setColor(color);
g.fillOval(x,y,xsize,ysize);
g.dispose();
}
public void move()
{
if(!box.isVisible())return;
Graphics g=box.getGraphics();
g.setXORMode(box.getBackground());
g.setColor(color);
g.fillOval(x,y,xsize,ysize);
x+=dx;
y+=dy;
Dimension d=box.getSize();
if(x<0){x=0;dx=-dx;}
if(x+xsize>=d.width){x=d.width-xsize;dx=-dx;}
if(y<0){y=0;dy=-dy;}
if(y+ysize>=d.height){y=d.height-ysize;dy=-dy;}
g.fillOval(x,y,xsize,ysize);
g.dispose();
}
public void run()
{
try{
draw();
for(int i=0;i<=1000;i++)
{move();
sleep(5);}
}catch(InterruptedException e){}
}
private JPanel box;
private static final int xsize=10;
private static final int ysize=10;
private int x=0;
private int y=0;
private int dx=2;
private int dy=2;
static int n=1;
int i=0;
private Color color;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -