java中Swing會奔跑的線程俠,javaswing線程俠

來源:互聯網
上載者:User

java中Swing會奔跑的線程俠,javaswing線程俠

實現效果:

奔潰的線程俠:(單線程)

主線程正在處理重新整理圖片的請求時,無法再接受其他請求,從而陷入阻塞的死迴圈狀態。

繪製圖片

import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import javax.swing.JPanel;public class CartonPerson extends JPanel implements Runnable{Image img[]=new Image[6];int index=0;int speed;public CartonPerson(int speed){this.speed=speed;img[0]=Toolkit.getDefaultToolkit().getImage("1.png");img[1]=Toolkit.getDefaultToolkit().getImage("2.png");img[2]=Toolkit.getDefaultToolkit().getImage("3.png");img[3]=Toolkit.getDefaultToolkit().getImage("4.png");img[4]=Toolkit.getDefaultToolkit().getImage("5.png");img[5]=Toolkit.getDefaultToolkit().getImage("6.png");}public void run(){while(true){try{repaint();Thread.sleep(100);}catch(InterruptedException e){e.printStackTrace();}}}@Overridepublic void paintComponent(Graphics g) {// TODO Auto-generated method stubsuper.paintComponent(g);g.drawImage(img[index], 0, 0, getWidth(), getHeight(), this);//System.out.println(index);if(index==5){index=0;}else{index++;}}}

單線程的表單布局

import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class SingleThreadCarton extends JFrame{CartonPerson p1;JButton bstart=new JButton("開始");JButton bpause=new JButton("稍等");JButton bresume=new JButton("繼續");SingleThreadCarton(){init();this.setTitle("奔潰的線程俠");this.setSize(600, 500);this.setResizable(true);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(null);p1=new CartonPerson(0);p1.setBounds(260, 100, 80, 160);bstart.setBounds(260,280, 80, 30);bpause.setBounds(260, 320, 80, 30);bresume.setBounds(260, 360, 80, 30);this.add(p1);this.add(bstart);this.add(bpause);this.add(bresume);ButtonClick bc=new ButtonClick();bstart.addActionListener(bc);bpause.addActionListener(bc);bresume.addActionListener(bc);}class ButtonClick implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==bstart){p1.run();}else if(e.getSource()==bpause){}else if(e.getSource()==bresume){}}}public static void main(String[] args){new SingleThreadCarton();}}

運行結果:

點擊[開始] 按鈕後,程式奔潰。

多線程的表單布局

import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class MultiThreadCarton extends JFrame{CartonPerson p1;Thread t1;JButton bstart=new JButton("開始");JButton bpause=new JButton("稍等");JButton bresume=new JButton("繼續");MultiThreadCarton(){init();this.setTitle("奔跑的線程俠");this.setSize(600, 500);this.setResizable(true);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}void init(){this.setLayout(null);p1=new CartonPerson(0);p1.setBounds(260, 100, 80, 160);bstart.setBounds(260,280, 80, 30);bpause.setBounds(260, 320, 80, 30);bresume.setBounds(260, 360, 80, 30);this.add(p1);this.add(bstart);this.add(bpause);this.add(bresume);ButtonClick bc=new ButtonClick();bstart.addActionListener(bc);bpause.addActionListener(bc);bresume.addActionListener(bc);t1=new Thread(p1);}class ButtonClick implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==bstart){//p1.run();t1.start();}else if(e.getSource()==bpause){t1.suspend();}else if(e.getSource()==bresume){t1.resume();}}}public static void main(String[] args){new MultiThreadCarton();}}

運行結果:如頂圖所示。

以上就是本次小編給大家帶來的關於java中Swing會奔跑的線程俠這個樣本的講述,感謝大家對幫客之家的支援。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.