📄 counterthread.java
字号:
//CounterThread.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//用于记数的线程。
class CounterSubTask extends Thread
{
private TextField textField;
public CounterSubTask(TextField argTextField)
{
textField = argTextField;
}
//以前的addCounter方法被放入线程中的run方法中。
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 CounterThread
{
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 = 250;
public static final int HEIGHT = 150;
//记数显示文本。
TextField textField = new TextField(20);
public CounterFrame()
{
setSize(WIDTH, HEIGHT);
setTitle("Counter");
Container contentPane = getContentPane();
JPanel textPanel = new JPanel();
textPanel.add(textField);
JPanel buttonPanel = new JPanel();
//开始记数的按钮。
addButton(buttonPanel, "Start",
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
//创建记数线程对象。
CounterSubTask cst = new CounterSubTask(textField);
//通过调用线程的start方法启动线程,start方法会自动执行run方法。
cst.start();
}
}
);
//停止记数的按钮,并退出程序。
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);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -