您现在的位置是:首页 >

java多线程使用案例 典型多线程小实例:球的运动

火烧 2023-03-10 19:02:39 1057
典型多线程小实例:球的运动 /** *一个典型的多线程小实例 球的运动 *几乎每一处都有注释 只要一点时间就能看懂 *适合初学者学习交流 */ im ort java awt * im ort jav

典型多线程小实例:球的运动  

    /**     *一个典型的多线程小实例 球的运动     *几乎每一处都有注释 只要一点时间就能看懂     *适合初学者学习交流    */     import java awt *;     import java awt event *;     import javax swing *;     import javax swing event *;

    public class ball     {     public static void main(String args[])     {     new frame();     }     }     class frame extends JFrame implements ActionListener ChangeListener     {     JPanel jp_HuaBan;     JPanel jp_YuLan;     JSlider js_red;     JSlider js_green;     JSlider js_blue;     JSlider js_size;     int x= y= ;     int ball_size= ;

    public frame()     {     super( ball );

    //创建画板     jp_HuaBan=new JPanel();     jp_HuaBan setBounds( );     jp_HuaBan setBackground(Color white);

    //创建球的予览框     jp_YuLan=new JPanel();     jp_YuLan setBounds( );     jp_YuLan setBackground(Color white);

    //创建一个文本框作为状态栏     JTextField jt_status=new JTextField( 请选择球的颜色 大小然后点击按钮 );     jt_status setBounds( );     jt_status setEditable(false);

    //创建红 绿 蓝三个标签     JLabel jl_red=new JLabel( 红 );     jl_red setBounds( );     JLabel jl_green=new JLabel( 绿 );     jl_green setBounds( );     JLabel jl_blue=new JLabel( 蓝 );     jl_blue setBounds( );     JLabel jl_size=new JLabel( 大小 );     jl_size setBounds( );

    //创建红 绿 蓝三个滑块     js_red=new JSlider(SwingConstants HORIZONTAL );     js_red setBounds( );     //填充滑块     js_red putClientProperty( JSlider isFilled Boolean TRUE);     //绘制勾号标记     js_red setPaintTicks(true);     //主要的勾号标记大小     js_red setMajorTickSpacing( );     //次要的勾号标记大小     js_red setMinorTickSpacing( );     //显示主要刻度的数字标记     js_red setPaintLabels(true);     //添加监听者     js_red addChangeListener(this);

    js_green=new JSlider(SwingConstants HORIZONTAL );     js_green setBounds( );     js_green putClientProperty( JSlider isFilled Boolean TRUE);     js_green setPaintTicks(true);     js_green setMajorTickSpacing( );     js_green setMinorTickSpacing( );     js_green setPaintLabels(true);     js_green addChangeListener(this);     js_blue=new JSlider(SwingConstants HORIZONTAL );     js_blue setBounds( );     js_blue putClientProperty( JSlider isFilled Boolean TRUE);     js_blue setPaintTicks(true);     js_blue setMajorTickSpacing( );     js_blue setMinorTickSpacing( );     js_blue setPaintLabels(true);     js_blue addChangeListener(this);     //创建球的大小的滑块     js_size=new JSlider(SwingConstants HORIZONTAL );     js_size setBounds( );     js_size putClientProperty( JSlider isFilled Boolean TRUE);     js_size setPaintTicks(true);     js_size setMajorTickSpacing( );     js_size setMinorTickSpacing( );     js_size setPaintLabels(true);     js_size addChangeListener(this);

java多线程使用案例 典型多线程小实例:球的运动

    //创建按钮     JButton jb=new JButton( ball );     jb setBounds( );     jb addActionListener(this);

    //将所有对象添加到窗体     Container c=this getContentPane();     c setLayout(null);     c add(jp_HuaBan);     c add(jp_YuLan);     c add(jl_red);     c add(jl_green);     c add(jl_blue);     c add(jl_size);     c add(js_red);     c add(js_green);     c add(js_blue);     c add(js_size);     c add(jb);     c add(jt_status);     //设置窗体的位置和大小     this setBounds( );     this setResizable(false);     this setVisible(true);     this addWindowListener(new WindowAdapter()     {     public void windowClosing(WindowEvent e)     {     System exit( );     }     });     }

    public void actionPerformed(ActionEvent e)     {     Color ball_color=new Color(js_red getValue()     js_green getValue() js_blue getValue());     rball r=new rball(jp_HuaBan js_size getValue() ball_color);     r start();     lball l=new lball(jp_HuaBan js_size getValue() ball_color);     l start();     }

    public void stateChanged(ChangeEvent e)     {     //获得jp_YuLan的画笔并在jp_YuLan的中心画个圆     Graphics g=jp_YuLan getGraphics();     g setColor(Color white);     g fillOval(x y ball_size ball_size);     x= js_size getValue()/ ;     y= js_size getValue()/ ;     ball_size=js_size getValue();     g setColor(new Color(js_red getValue()     js_green getValue() js_blue getValue()));     g fillOval(x y ball_size ball_size);     g dispose();     }     }

    class lball extends Thread     {     //从窗口左面出现的球     JPanel jp_HuaBan;     int ball_size;     Color ball_color;

    public lball(JPanel j int i Color c)     {     //获得画板的句柄     jp_HuaBan=j;     //获得球的大小     ball_size=i;     //获得球的颜色     ball_color=c;     }

    public void run()     {     Graphics g=jp_HuaBan getGraphics();     int x= y= ;     //计算画球时X轴 Y轴的最大坐标     int HuaBan_x= ball_size;     int HuaBan_y= ball_size;     //球移动的增量     int x_increase= y_increase= ;     while(true)     {     //将上一次画的球擦掉     g setColor(Color white);     g fillOval(x y ball_size ball_size);     //画球     g setColor(ball_color);     x=x+x_increase;     y=y+y_increase;     g fillOval(x y ball_size ball_size);     //判断球是否到达了边界 若到达了则转向     if(x<= || x>=HuaBan_x) x_increase= x_increase;     if(y<= || y>=HuaBan_y) y_increase= y_increase;     try     {     //休眠一段时间     Thread sleep( );     }     catch(Exception e){}     }     }     }

    class rball extends Thread     {     //从窗口左面出现的球     JPanel jp_HuaBan;     int ball_size;     Color ball_color;

    public rball(JPanel j int i Color c)     {     jp_HuaBan=j;     ball_size=i;     ball_color=c;     }

    public void run()     {     Graphics g=jp_HuaBan getGraphics();     int x= ball_size y= ;     int HuaBan_x=x;     int HuaBan_y= ball_size;     int x_increase= y_increase= ;     while(true)     {

lishixinzhi/Article/program/Java/gj/201311/27730  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码