import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
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 WelcomeJFrame extends JFrame {
Dimension dms;
public WelcomeJFrame(String[] texts) {
dms = getToolkit().getScreenSize();
setBounds(dms.width/4, dms.height/4, dms.width/2, dms.height/2);
setLayout(new GridLayout(3, 1));
for (int i = 0; i < texts.length; i++) {
getContentPane().add(new MyJPanel(texts[i]));
}
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
String[] texts = {"Welcome","Hello","Rollby"};
new WelcomeJFrame(texts);
}
private class MyJPanel extends JPanel implements Runnable, ActionListener{//一个面板分成两份
JTextField text_word,text_sleep,jtfd;
JPanel pnl;
JButton btn1,btn2;
Thread t;
int sleeptime;
public MyJPanel(String text) {
setLayout(new GridLayout(2, 1));
if(text!=null&&text.length()!=0){
{//确定版面
char[] space = new char[110-text.length()];
text_word = new JTextField(text + new String(space) );
text_word.setEditable(false);
pnl = new JPanel(new FlowLayout(FlowLayout.LEFT));
add(text_word);
add(pnl);
}
{//在下面显示状态
JLabel lb = new JLabel("sleep:");
text_sleep = new JTextField(5);
sleeptime = (int) (Math.random()*100);
text_sleep.setText(""+sleeptime);
text_sleep.addActionListener(this);//为text_sleep注册监听
btn1 = new JButton("启动");
btn2 = new JButton("中断");
pnl.add(lb);
pnl.add(text_sleep);
pnl.add(btn1);
pnl.add(btn2);
btn1.addActionListener(this);
btn2.addActionListener(this);
btn1.setEnabled(false);
btn2.setEnabled(true);
JLabel lb1 = new JLabel("state:");
pnl.add(lb1);
jtfd = new JTextField(10);
jtfd.setEditable(false);
pnl.add(jtfd);
t = new Thread(this);
t.start();
jtfd.setText(""+t.getState());
}
}
}
@Override
public void run() {
while (true) {
try {
String str = text_word.getText();
str = str.substring(1) + str.substring(0, 1);
text_word.setText(str);
Thread.sleep(sleeptime);
} catch (InterruptedException e) {
//sleeptime = 100;
//text_sleep.setText(""+sleeptime);
//JOptionPane.showMessageDialog(this, "恭喜你挂了!!");
break;// TODO Auto-generated catch block
//e.printStackTrace();
}
}
}
private void MyUpdateParse(){
try {
sleeptime = Integer.parseInt(text_sleep.getText());
text_sleep.setText(""+sleeptime);
} catch (NumberFormatException e1) {
JOptionPane.showConfirmDialog(this, text_sleep+"\"傻逼,重输!!");
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==text_sleep){
MyUpdateParse();
}
if(e.getSource()==btn1){
MyUpdateParse();
t = new Thread(this);
t.start();
btn1.setEnabled(false);
btn2.setEnabled(true);
jtfd.setText(""+t.getState());
}
if(e.getSource()==btn2){
t.interrupt();
btn2.setEnabled(false);
btn1.setEnabled(true);
jtfd.setText(""+t.getState());
}
}
}//---------子类private class MyJPanel extends JPanel implements Runnable, CaretListener
}