.NET framework 2.0でThread中で別Threadのコントロールにアクセスに失敗するという件がありましたが、これをJava AWTでやってみました。
結論は、「問題なし」でした。サンプルコードは下記の通りです。
import java.awt.*;
import java.awt.event.*;
public class ThreadTest
{
public static void main(String[] args)
{
TestFrame frm = new TestFrame();
frm.setSize(200, 100);
frm.show();
}
}
class TestFrame extends Frame implements ActionListener
{
Button threadStartButton;
Label label;
TestFrame()
{
setLayout(new FlowLayout());
threadStartButton = new Button("Thread Start");
add(threadStartButton);
threadStartButton.addActionListener(this);
label = new Label("LABEL");
add(label);
addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e) {setVisible(false);}});
}
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == threadStartButton)
{
TestThread testThread = new TestThread(label);
}
}
}
class TestThread implements Runnable
{
Thread thread;
Label label;
TestThread(Label lbl)
{
label = lbl;
thread = new Thread(this, "test");
thread.start();
}
public void run()
{
//ラベルに値を設定
label.setText("OK");
}
}