- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
需要制作一个音乐播放器作为我的简单java项目。它打开一个文件并将名称加载到文本字段中。当按下“播放”按钮时,该名称会在文本字段中圈出,当按下“暂停”按钮时,该圈圈会暂停。播放暂停是 JTogglebuttons,我有一个按钮名称为 stop。使用多线程,我可以播放和暂停字符串,但在我按停止一次后..如果我再次打开一个新的音乐文件并按播放,它会显示非法线程状态异常。请在这里帮助我..注意:我还没有把在其中播放音乐的代码中..一旦这个问题解决,我会将其放入。非常感谢你的
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import sun.audio.*;
public class search extends Thread implements ActionListener
{
JFrame f;
JButton stop,open;
JToggleButton play;
JTextField tf,text;
JTextArea ta;
JLabel lab,lab1;
String str,dest;
JScrollPane scrol;
File fl;
int myfl=0,myfl1=0,myfl2=0;
search()
{
f=new JFrame("Music Player");
f.setLayout(null);
f.setSize(620,300);
play=new JToggleButton("play");
play.setBounds(100,150,270,30);
play.addActionListener(this);
f.add(play);
play.setEnabled(false);
stop=new JButton("stop");
stop.setBounds(400,150,120,30);
stop.addActionListener(this);
f.add(stop);
stop.setEnabled(false);
open=new JButton("open");
open.setBounds(100,200,420,30);
open.addActionListener(this);
f.add(open);
tf=new JTextField();
tf.setBounds(25,50,565,40);
tf.setFont(new Font("DK BabySitter",Font.BOLD,20));
tf.setHorizontalAlignment(JTextField.CENTER);
f.add(tf);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getActionCommand().equals("open"))
{
FileDialog fd=new FileDialog(f,"Open Box",FileDialog.LOAD);
fd.setSize(300,300);
fd.setVisible(true);
String s1="mp3";
str=fd.getFile();
dest=fd.getDirectory()+fd.getFile();
if(str.toLowerCase().endsWith(s1))
{
tf.setText(str);
//pause.setEnabled(true);
play.setEnabled(true);
stop.setEnabled(true);
}
else
{
JOptionPane.showMessageDialog(f, "Select a valid file format");
}
}
if(ae.getActionCommand().equals("stop"))
{
play.setLabel("play");
myfl1=1;
tf.setText(" ");
stop();
}
if(ae.getActionCommand().equals("play"))
{
try
{
play.setLabel("pause");
if(myfl==1 && myfl1==0)
{
resume();
}
if(myfl==0 || myfl1==1)
{
start();
}
}
catch(IllegalThreadStateException e)
{
tf.setText("error a gya re");
Thread newth= new Thread();
newth.start();
}
}
if(ae.getActionCommand().equals("pause"))
{
play.setLabel("play");
myfl=1;
suspend();
}
}
public void run()
{
try
{
String rot=tf.getText();
char rotn[]=new char[rot.length()];
int flag=rot.length();
int move=0;
rotn=rot.toCharArray();
tf.setText(" ");
for(;;)
{
for(;;)
{
sleep(100);
tf.setText( tf.getText() + rotn[move]);
move++;
if(move==(flag-1))
{
move=0;
break;
}
}
tf.setText(" ");
}
}
catch(Exception e)
{
tf.setText("error occured");
}
}
public static void main(String args[])
{
try {
// Set System L&F
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (UnsupportedLookAndFeelException e) {
// handle exception
}
catch (ClassNotFoundException e) {
// handle exception
}
catch (InstantiationException e) {
// handle exception
}
catch (IllegalAccessException e) {
// handle exception
}
new search();
}
}
最佳答案
您不应该使用Thread.stop()
, Thread.suspend()
或Thread.resume()
。这些方法已被弃用并明确记录为具有严重影响(例如潜在的死锁等)。另请参阅Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? .
在这种特定情况下,会发生异常,因为您不能多次start()
Thread
。您需要对线程进行编码(或者更好的是:不要扩展Thread
,而是实现Runnable
),以便它正确处理应用程序的暂停、启动、停止等不使用 Thread
已弃用且危险的方法。
关于java - IllegalThreadStateException 一次又一次发生..停止后需要重新启动线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15266779/
这个问题是我之前关于堆栈溢出的问题的延续how-to-download-images-asynchronously-from-web-server 。我正在努力在黑莓中制作异步列表。现在它对我来说工作
在我的乒乓球游戏中,每个对象(球和两个 Racket )都在独立线程中运行。 static Ball b = new Ball(195, 145); Thread ball = new Thread(
我的一些用户一直在报告 IllegalThreadStateExceptions,这导致返回以下代码。我无法重新创建它,大多数人都能够毫无问题地执行这部分代码。 代码会定期重新执行,所以旧线程应该被新
我正在尝试多线程,想要实现一个小程序来同时下载多个文件。我创建了一个扩展 Thread 的 FileDownloader 类。 总的来说,我的想法是创建一个包含所有相关 FileDownload 对象
我在 android studio 中有一个 android 应用程序的代码,可以在 1 秒延迟后运行一个方法: new java.util.Timer().schedule(
我一直在研究月球着陆器示例,但在尝试实现关于屏幕时遇到了问题。我将其中一个菜单项(在 onCreateOptionsMenu 中)更改为“关于”选项。选择此选项后,将启动一个新的 Activity 并
这是一个多线程练习,我使用监视器来同步线程。我的监视器或同步没有问题,没有死锁。我想在主线程中创建一些线程。下面的代码生成线程,将它们添加到 ArrayList 并启动它们。使用 switch-cas
import java.io.*; class Sysexecute { public static void main(String args[]) throws IOException,I
我在使用以下代码时遇到 IllegalThreadStateException 异常:我已经启动了这个线程一次(通过使用 thread.start())并再次尝试在另一个地方启动它,所以使用了以下代码
我正在处理线程。但是,当我尝试启动一个线程时,我得到一个异常。在具体的 java.lang.IllegalThreadStateException 中。我的代码是: public void readC
我正在对一个应用程序执行负载测试,并且有5个线程。我希望所有线程都可以随机运行,因此知道设备上的负载。假设运行所有线程的次数为5,则所有线程应成功运行5次而没有IllegalThreadStateEx
根据 中提到的错误,我们的应用每天会收到大约 1k 次崩溃。 OneSignal的 github issues . 错误说明: 不幸的是,我无法重现此问题。所有的崩溃都来自 Crashlytics 报
我收到 IllegalThreadStateException。 在 Eclipse 的调试器下一切正常,但当我尝试在 Firefox 上测试它时,它开始失败。第一次运行正常,刷新网页后出现异常。 这
需要制作一个音乐播放器作为我的简单java项目。它打开一个文件并将名称加载到文本字段中。当按下“播放”按钮时,该名称会在文本字段中圈出,当按下“暂停”按钮时,该圈圈会暂停。播放暂停是 JToggleb
错误消息是java.lang.IllegalThreadStateException(位于timeOutControl.start()行)。可能是什么原因? TimeOutControl timeOu
我有一个java程序,需要很长时间才能编译。 出于测试目的,如果编译需要很长时间,我想终止该程序并重新启动它。 这是我的代码的简化版本: public class Main { public
try { this.interrupt(); } catch (IllegalThreadStateException e) { e.printStackTrace(); } 我发现
只是来完善我的应用程序并使其在用户离开后恢复。当应用程序恢复时,我得到一个 IllegalThreadStateException,这很烦人。这个问题出现在谷歌给出的例子中 Lunar Lander
在 Java 中,我得到这个异常: Exception in thread "main" java.lang.IllegalThreadStateException at java.lang.
我的程序中有 2 个线程和一个主类,每当我尝试运行它时,一个线程就会给我一个 IllegalThreadStateException,我不知道为什么。程序需要进行一场龟兔赛跑,乌龟可以移动10米,直到
我是一名优秀的程序员,十分优秀!