Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

スレッドとイベントに関して

スレッドとchoiceのイベントを同時に動かしたいのですがどうしたらいいでしょうか?
import java.awt.*;
import java.awt.event.*;
import java.util.Date;

class AnimationClockTestFrame extends Frame implements Runnable{
    private Thread clockThread=null;
        
    public AnimationClockTestFrame(){
//        setSize(480,80);
        
        setForeground(Color.BLUE);
        setFont(new Font("Monospced",Font.BOLD,24));
    }
    public void paint(Graphics g){
        Date date=new Date();
        g.drawString(date.toString(),50,60);
    }
    public void start(){
        if(clockThread==null){
            clockThread=new Thread(this,"Clock");
            clockThread.start();
        }
    }
    public void stop(){
        clockThread=null;
    }
    public void run(){
        while(Thread.currentThread()==clockThread){
            repaint();
            try{
                Thread.sleep(1000);
            }catch(InterruptedException e){
            }
        }
    }
}
class ColorFrame extends Frame implements ItemListener{
    public ColorFrame(String s){
        setTitle(s);
        setLocation(800,200);
        setSize(600,200);
        setLayout(new FlowLayout(FlowLayout.RIGHT));
    }
    public void itemStateChanged(ItemEvent e){
        String s=(String)e.getItem();
        if(s=="RED"){
            setBackground(Color.RED);
        }else if(s=="BLUE"){
            setBackground(Color.BLUE);
        }else if(s=="WHITE"){
            setBackground(Color.WHITE);
        }else if(s=="YELLOW"){
            setBackground(Color.YELLOW);
        }
    }
}
public class AnimationClockTest{
    public static void main(String[] args){
        AnimationClockTestFrame frame=new AnimationClockTestFrame();
        frame.addWindowListener(
        new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        }
    );
    ColorFrame ch=new ColorFrame("ColorFrame");
    Choice choice=new Choice();
    choice.add("RED");
    choice.add("BLUE");
    choice.add("WHITE");
    choice.add("YELLOW");
    choice.addItemListener(ch);
    ch.add(choice);
    ch.setVisible(true);
    frame.setVisible(true);
    frame.start();
    }
}

1

回答

316

閲覧

1件の回答

評価

0

具体的にどうなれば質問者が「同時に」と言える状態なのだかが分からん。
一般的には複数のスレッドが独立して動いている状況を「同時に」と言うと思うが。

回答する

ログインしていません。

ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 アカウントをお持ちでない方は会員登録を行ってください。

ユーザ名匿名