Quantcast
Channel: 質問!ITmedia 新着質問(Java/253)
Viewing all articles
Browse latest Browse all 2439

java スロット

$
0
0
ボタンj1を押すと、ラベルtlの数字だけを停止させるようにし、tl2,tl3は数字を表示したい のですが、 現在ボタンj1を押すと、Exception in thread "Thread-2" Exception in thread "Thread-4" java.lang.IllegalMonitorStateException・・・と例外が発生し、プログラムが停止します。 以下がプログラムです。 import java.awt.*; import java.awt.event.*; import java.util.*; public class AWT extends Frame{ int i=0; String str; Button j1; int i2=0; TL tl; boolean pending=false; public AWT(){ super(); this.setSize(800,700); j1=new Button("AWT"); j1.addActionListener(new MyButtonActionAdapter()); Button j2=new Button("AWT2"); Button j3=new Button("AWT3"); this.addWindowListener(new WA()); this.setVisible(true); this.setLayout(new GridLayout(2,3)); tl =new TL(1); this.add(tl); TL tl2=new TL(10); this.add(tl2); TL tl3=new TL(30); this.add(tl3); this.add(j1); this.add(j2); this.add(j3); } public static void main(String[] args){ AWT test=new AWT(); test.validate(); } class WA extends WindowAdapter{ public void windowClosing(WindowEvent ev){ System.exit(0); } }/*class WAの終わり*/ class TL extends Label implements Runnable{ Random rnd = new Random(); TL(long seed){ this.setText("count" ); this.setFont(new Font("SansSerif",Font.BOLD,18)); this.setForeground(Color.blue); rnd.setSeed(seed); new Thread(this).start(); } public void run(){ while(true){ i2=rnd.nextInt(3)+1; this.setText(String.valueOf(i2)); try{ Thread.sleep(1000); if(pending){ wait(); } }catch(InterruptedException e){ e.printStackTrace(); }finally{ } } }/*runの終わり*/ public synchronized void setpending(boolean f){ pending=f; } }/*class TLの終わり*/ class MyButtonActionAdapter implements ActionListener{ public void actionPerformed(ActionEvent ev){ j1.setLabel("CLICKED"); tl.setpending(!pending); } }/*class MY・・・の終わり*/ }/* class AWTの終わり*/ ご指導お願いします。

Viewing all articles
Browse latest Browse all 2439

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>