📄 countermultithread.java
字号:
//CounterMultiThread.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class CounterSubTask extends Thread
{
private TextField textField;
public CounterSubTask(TextField argTextField)
{
textField = argTextField;
}
public void run()
{
//循环50次,每次递增1。
for (int i = 0; i < 50; i++)
{
try
{
textField.setText(Integer.toString(i));
//暂时停止当前线程50毫秒。
Thread.sleep(50);
}
catch (InterruptedException e)
{
}
}
}
}
public class CounterMultiThread
{
public static void main(String[] args)
{
JFrame frame = new CounterFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class CounterFrame extends JFrame
{
public static final int WIDTH = 400;
public static final int HEIGHT = 300;
JPanel textPanel = new JPanel();
int number = 0; //已经在窗口中显示的文本框的数目。
public CounterFrame()
{
setSize(WIDTH, HEIGHT);
setTitle("Counter");
Container contentPane = getContentPane();
JPanel buttonPanel = new JPanel();
//增加记数文本框的按钮。
addButton(buttonPanel, "Add",
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
addSubTask();
}
}
);
//停止记数按钮,并退出程序。
addButton(buttonPanel, "Close",
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
System.exit(0);
}
}
);
contentPane.add(textPanel, BorderLayout.NORTH);
contentPane.add(buttonPanel, BorderLayout.SOUTH);
}
public void addButton(Container c, String title, ActionListener
listener)
{
JButton button = new JButton(title);
c.add(button);
button.addActionListener(listener);
}
//增加一个文本框,启动一个记数线程。
public void addSubTask()
{
//受屏幕大小限制,控制能够增加的文本框的数量为16个。
if(number >= 16)
{
return;
}
number++;
//记数显示文本。
TextField textField = new TextField(20);
textPanel.add(textField);
//当增加一个文本框后,需要重新显示窗口。
show();
//创建记数线程对象。
CounterSubTask cst=new CounterSubTask(textField);
//通过调用线程的start方法启动线程,start方法会自动执行run方法。
cst.start();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -