我有以下代碼:SwingWorker的工作不
import javax.swing.*;
import java.awt.event.*;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
public class KaraokeMachine extends JFrame implements ActionListener
{
ClassLoader Idr = this.getClass().getClassLoader();
java.applet.AudioClip everythingIsAwesome = JApplet.newAudioClip(Idr.getResource("everything is awesome.wav"));
JLabel lbl1 = new JLabel("");
JButton btn = new JButton("Play");
JPanel pnl = new JPanel();
final Executor executor = Executors.newCachedThreadPool();
public KaraokeMachine()
{
super("Karaoke");
setSize(520, 280);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pnl.add(lbl1);
pnl.add(btn);
btn.addActionListener(this);
add(pnl); setVisible(true);
}
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == btn)
{
SwingWorker<Void, String> worker = new SwingWorker<Void, String>()
{
@Override
protected Void doInBackground() throws Exception
{
everythingIsAwesome.play();
this.publish("Everything");
Thread.sleep(600);
this.publish("Everything is");
Thread.sleep(400);
this.publish("Everything is Awesome!");
Thread.sleep(2000);
this.publish("Everything");
Thread.sleep(600);
this.publish("Everything is");
Thread.sleep(400);
this.publish("Everything is cool");
Thread.sleep(400);
this.publish("Everything is cool when");
Thread.sleep(400);
this.publish("Everything is cool when you're");
Thread.sleep(400);
this.publish("Everything is cool when you're part");
Thread.sleep(150);
this.publish("Everything is cool when you're part of");
Thread.sleep(150);
this.publish("Everything is cool when you're part of a");
Thread.sleep(150);
this.publish("Everything is cool when you're part of a team");
Thread.sleep(1000);
this.publish("Everything");
Thread.sleep(600);
this.publish("Everything is");
Thread.sleep(400);
this.publish("Everything is Awesome!");
Thread.sleep(1500);
this.publish("When");
Thread.sleep(300);
this.publish("When you're");
Thread.sleep(300);
this.publish("When you're livin'");
Thread.sleep(300);
this.publish("When you're livin' in");
Thread.sleep(300);
this.publish("When you're livin' in a");
Thread.sleep(300);
this.publish("When you're livin' in a dream!");
Thread.sleep(300);
return null;
}
@Override
protected void process(List<String> res)
{
for(String text : res)
{
lbl1.setText(text);
}
}
};
executor.execute(worker);
}
}
public static void main(String[] args)
{
KaraokeMachine karaoke = new KaraokeMachine();
}
}
當我使之成爲一個類文件這一點,它工作正常,但是當我把它變成一個罐子文件,我得到以下錯誤:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDegFoundError: KaraokeMachine$1
有誰知道如何更改代碼,以便swingworker在jar文件中工作?
異常堆棧跟蹤也是**文本**。請不要截圖 - 將它們作爲(格式化!)文本添加到您的問題! – GhostCat
好的,謝謝。我會去做。 – DalekCaan99
更好 - 但現在你刪除了「太多」。在這種情況下,它是可以的,但是,一般情況下:可以將「完整」堆棧跟蹤複製到問題中。編輯可以隨時*刪除*不需要的東西 - 但他不能添加缺少的東西。 – GhostCat