📄 swingthreadtest.java
字号:
/**
* @version 1.20 1999-04-26
* @author Cay Horstmann
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class SwingThreadTest
{ public static void main(String[] args)
{ JFrame frame = new SwingThreadFrame();
frame.show();
}
}
class SwingThreadFrame extends JFrame
{ public SwingThreadFrame()
{ setTitle("SwingThread");
setSize(400,300);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
} );
model = new DefaultListModel();
JList list = new JList(model);
JScrollPane scrollPane = new JScrollPane(list);
JPanel p = new JPanel();
p.add(scrollPane);
getContentPane().add(p, "South");
JButton b = new JButton("Good");
b.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent event)
{ new GoodWorkerThread(model).start();
}
});
p = new JPanel();
p.add(b);
b = new JButton("Bad");
b.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent event)
{ new BadWorkerThread(model).start();
}
});
p.add(b);
getContentPane().add(p, "North");
}
private DefaultListModel model;
}
class BadWorkerThread extends Thread
{ public BadWorkerThread(DefaultListModel aModel)
{ model = aModel;
generator = new Random();
}
public void run()
{ while (true)
{ Integer i = new Integer(generator.nextInt(10));
if (model.contains(i))
model.removeElement(i);
else
model.addElement(i);
yield();
}
}
private DefaultListModel model;
private Random generator;
}
class GoodWorkerThread extends Thread
{ public GoodWorkerThread(DefaultListModel aModel)
{ model = aModel;
generator = new Random();
}
public void run()
{ while (true)
{ final Integer i = new Integer(generator.nextInt(10));
EventQueue.invokeLater(new Runnable()
{ public void run()
{ if (model.contains(i))
model.removeElement(i);
else
model.addElement(i);
}
});
yield();
}
}
private DefaultListModel model;
private Random generator;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -