📄 counterthreadapplet.java
字号:
//CounterThreadApplet.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CounterThreadApplet extends JApplet implements Runnable
{
//控制记数文本框是否继续记数。
private boolean countFlag=true;
//记数窗口已经显示的文本框数目。
private int number = 0;
private JPanel textPanel = new JPanel();
private Container contentPane;
private JFrame counterFrame;
public static final int WIDTH = 450;
public static final int HEIGHT = 350;
public void init()
{
//弹出记数窗口。
counterFrame = new JFrame();
counterFrame.setTitle("CounterThreadAppletFrame");
counterFrame.setSize(WIDTH, HEIGHT);
contentPane = counterFrame.getContentPane();
JPanel buttonPanel = new JPanel();
//增加记数文本框的按钮。
addButton(buttonPanel, "Add",
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
countFlag = true;
startCount();
}
}
);
//停止记数按钮,并关闭窗口。
addButton(buttonPanel, "Close",
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
stopCount();
}
}
);
contentPane.add(buttonPanel, BorderLayout.SOUTH);
counterFrame.show();
}
public void startCount()
{
//受窗口大小限制,控制能够增加的文本框的数量为16个。
if(number >= 16)
{
return;
}
number++;
//生成新线程。
Thread counterRunner = new Thread(this);
counterRunner.start();
}
public void stopCount()
{
if (countFlag)
{
countFlag = false;
}
showStatus("stop counting!");
//关闭窗口
counterFrame.dispose();
}
public void run()
{
TextField textField = new TextField(20);
textPanel.add(textField);
contentPane.add(textPanel, BorderLayout.NORTH);
counterFrame.show();
//循环50次,每次递增1。
for (int i = 0; i < 50; i++)
{
try
{
if(countFlag)
textField.setText(Integer.toString(i));
//暂时停止当前线程50毫秒。
Thread.sleep(50);
}
catch (InterruptedException e)
{
}
}
}
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 + -