thread 线程训练第一天
来源:互联网 发布:济宁网络教育报名 编辑:程序博客网 时间:2024/06/05 09:25
package threadDemo1;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class WelcomeJFrame1 extends JFrame {
public WelcomeJFrame1(String texts[]) {
super("滚动条");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setBounds(400, 300, 400, 300);
if (texts == null || texts.length == 0) {
this.getContentPane().add(new PollbyJPanel("welcome"));
} else {
this.getContentPane().setLayout(new GridLayout(texts.length, 1));
for (int i = 0; i < texts.length; i++) {
this.getContentPane().add(new PollbyJPanel(texts[i]));
}
}
this.setVisible(true);
}
public WelcomeJFrame1() {
this(null);
}
public static void main(String[] args) {
String texts[] = { "Welcome", "Hello", "欢迎光临..." };
new WelcomeJFrame1(texts);
}
}
class PollbyJPanel extends JPanel implements Runnable, ActionListener {
private JTextField text_word, text_sleep, text_last;
private JLabel lb1, lb2;
private JButton btnStart, btnBreak;
private int sleeptime;
private Thread thread_rollby;
public PollbyJPanel(String text) {
this.setLayout(new GridLayout(2, 1));
char space[] = new char[100];
java.util.Arrays.fill(space, ' ');// 用类全名表示
text_word = new JTextField(text + new String(space));
text_word.setHorizontalAlignment(JTextField.RIGHT);
this.add(text_word);// 加在第一行的第一列
JPanel panel_sub = new JPanel();
panel_sub.setLayout(new FlowLayout(FlowLayout.RIGHT));
this.add(panel_sub);// 这块面板加在第二行
// 往这块面板上加东西
// lb1=new JLabel("sleep");
panel_sub.add(new JLabel("sleep"));
sleeptime = (int) (Math.random() * 100);
text_sleep = new JTextField("" + sleeptime);
panel_sub.add(text_sleep);
text_sleep.addActionListener(this);
btnStart = new JButton("启动");
panel_sub.add(btnStart);
btnStart.addActionListener(this);
btnBreak = new JButton("中断");
panel_sub.add(btnBreak);
btnBreak.addActionListener(this);
thread_rollby = new Thread(this); // 让线程启动后,跑自己当前类中的run()方法
btnBreak.setEnabled(false);
lb2 = new JLabel("state");
panel_sub.add(lb2);
text_last = new JTextField("" + thread_rollby.getState(), 10);
// text_last=new JTextField("NEW",10);
text_last.setEditable(false);
panel_sub.add(text_last);
}
@Override
public void run() {
while (true)
try {
// System.out.println("w");
String str = text_word.getText();
str = str.substring(1) + str.charAt(0);
text_word.setText(str);
Thread.sleep(sleeptime);
} catch (InterruptedException ex) {
break;
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnStart) {
try {
sleeptime = Integer.parseInt(text_sleep.getText());
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(this, "\"" + text_sleep.getText()
+ "\"" + "不能转换成整数,请从新输入!");
}
thread_rollby = new Thread(this);// 每次从新开一个线程
thread_rollby.start();
text_last.setText("" + thread_rollby.getState());
btnStart.setEnabled(false);
btnBreak.setEnabled(true);
}
if (e.getSource() == btnBreak) {
thread_rollby.interrupt();// 设置中断
text_last.setText("" + thread_rollby.getState());
btnBreak.setEnabled(false);
}
if (e.getSource() == text_sleep) {
try {
sleeptime = Integer.parseInt(text_sleep.getText());
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(this, "\"" + text_sleep.getText()
+ "\"" + "不能转换成整数,请重新新输入");
}
}
}
}
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class WelcomeJFrame1 extends JFrame {
public WelcomeJFrame1(String texts[]) {
super("滚动条");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setBounds(400, 300, 400, 300);
if (texts == null || texts.length == 0) {
this.getContentPane().add(new PollbyJPanel("welcome"));
} else {
this.getContentPane().setLayout(new GridLayout(texts.length, 1));
for (int i = 0; i < texts.length; i++) {
this.getContentPane().add(new PollbyJPanel(texts[i]));
}
}
this.setVisible(true);
}
public WelcomeJFrame1() {
this(null);
}
public static void main(String[] args) {
String texts[] = { "Welcome", "Hello", "欢迎光临..." };
new WelcomeJFrame1(texts);
}
}
class PollbyJPanel extends JPanel implements Runnable, ActionListener {
private JTextField text_word, text_sleep, text_last;
private JLabel lb1, lb2;
private JButton btnStart, btnBreak;
private int sleeptime;
private Thread thread_rollby;
public PollbyJPanel(String text) {
this.setLayout(new GridLayout(2, 1));
char space[] = new char[100];
java.util.Arrays.fill(space, ' ');// 用类全名表示
text_word = new JTextField(text + new String(space));
text_word.setHorizontalAlignment(JTextField.RIGHT);
this.add(text_word);// 加在第一行的第一列
JPanel panel_sub = new JPanel();
panel_sub.setLayout(new FlowLayout(FlowLayout.RIGHT));
this.add(panel_sub);// 这块面板加在第二行
// 往这块面板上加东西
// lb1=new JLabel("sleep");
panel_sub.add(new JLabel("sleep"));
sleeptime = (int) (Math.random() * 100);
text_sleep = new JTextField("" + sleeptime);
panel_sub.add(text_sleep);
text_sleep.addActionListener(this);
btnStart = new JButton("启动");
panel_sub.add(btnStart);
btnStart.addActionListener(this);
btnBreak = new JButton("中断");
panel_sub.add(btnBreak);
btnBreak.addActionListener(this);
thread_rollby = new Thread(this); // 让线程启动后,跑自己当前类中的run()方法
btnBreak.setEnabled(false);
lb2 = new JLabel("state");
panel_sub.add(lb2);
text_last = new JTextField("" + thread_rollby.getState(), 10);
// text_last=new JTextField("NEW",10);
text_last.setEditable(false);
panel_sub.add(text_last);
}
@Override
public void run() {
while (true)
try {
// System.out.println("w");
String str = text_word.getText();
str = str.substring(1) + str.charAt(0);
text_word.setText(str);
Thread.sleep(sleeptime);
} catch (InterruptedException ex) {
break;
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnStart) {
try {
sleeptime = Integer.parseInt(text_sleep.getText());
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(this, "\"" + text_sleep.getText()
+ "\"" + "不能转换成整数,请从新输入!");
}
thread_rollby = new Thread(this);// 每次从新开一个线程
thread_rollby.start();
text_last.setText("" + thread_rollby.getState());
btnStart.setEnabled(false);
btnBreak.setEnabled(true);
}
if (e.getSource() == btnBreak) {
thread_rollby.interrupt();// 设置中断
text_last.setText("" + thread_rollby.getState());
btnBreak.setEnabled(false);
}
if (e.getSource() == text_sleep) {
try {
sleeptime = Integer.parseInt(text_sleep.getText());
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(this, "\"" + text_sleep.getText()
+ "\"" + "不能转换成整数,请重新新输入");
}
}
}
}
1 0
- thread 线程训练第一天
- 暑期训练第一天
- #C++训练第一天#
- IMWeb训练营第一天
- Capstone训练营第一天
- 寒假集训第一天--结构体训练
- 参加acm暑假训练第一天
- 寒假第一天1.12训练小结
- 训练营第一天学习笔记
- 前端训练营第一天笔记
- 腾讯前端求职训练营第一天
- 2017-12-6 训练营第一天
- metasploit魔鬼训练营第一天笔记
- 【达内训练营第一天】07_26_Linux基础
- 备战国际半程马拉松训练第一天总结
- 创建线程的第一种方式:继承Thread…
- 线程的第一种创建方式继承Thread
- 创建线程的第一种方法:继承Thread类
- 【C语言提高21】关于字符串的一个例题
- leetcode -- Pascal's Triangle -- 简单
- TCP连接异常终止(RST包)
- Fragment栈结构压栈弹栈以及Demo
- telephony例子转载
- thread 线程训练第一天
- 链式二叉树
- 哔了沟了,今天犯了一个低级错误
- linux find命令出现Permission denied后怎么办?------利用linux黑洞文件/dev/null
- 生成括号
- 15_Java StringBuffer和StringBuilder类
- 几何-三角形及三角函数
- Linux文件系统的设计
- Codeforces 582A:GCD Table