• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java中Swing会奔跑的线程侠

java 搞代码 4年前 (2022-01-05) 36次浏览 已收录 0个评论

本文通过代码示例给大家详细讲解了java中Swing会奔跑的来源[email protected]搞@^&代*@码)网线程侠这个经典的示例,有兴趣的朋友学习下。

实现

奔溃的线程侠:(单线程)

主线程正在处理刷新图片的请求时,无法再接受其他请求,从而陷入阻塞的死循环状态。

绘制图片

 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-600"); img[1]=Toolkit.getDefaultToolkit().getImage("2.png-600"); img[2]=Toolkit.getDefaultToolkit().getImage("3.png-600"); img[3]=Toolkit.getDefaultToolkit().getImage("4.png-600"); img[4]=Toolkit.getDefaultToolkit().getImage("5.png-600"); img[5]=Toolkit.getDefaultToolkit().getImage("6.png-600"); } public void run(){ while(true){ try{ repaint(); Thread.sleep(100); } catch(InterruptedException e){ e.printStackTrace(); } } } @Override public void paintComponent(Graphics g) { // TODO Auto-generated method stub super.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{ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(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{ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(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(); } }

运行结果:如顶图所示。

本文转载于:https://www.idaobin.com/archives/841.html

以上就是java中Swing会奔跑的线程侠的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java中Swing会奔跑的线程侠

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址