ThreadViewer.java
上传用户:songled
上传日期:2022-07-14
资源大小:94k
文件大小:2k
源码类别:

进程与线程

开发平台:

Java

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. import javax.swing.table.*;
  5. public class ThreadViewer extends JPanel {
  6. private ThreadViewerTableModel tableModel;
  7. public ThreadViewer() {
  8. tableModel = new ThreadViewerTableModel();
  9. JTable table = new JTable(tableModel);
  10. table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
  11. TableColumnModel colModel = table.getColumnModel();
  12. int numColumns = colModel.getColumnCount();
  13. // manually size all but the last column
  14. for ( int i = 0; i < numColumns - 1; i++ ) {
  15. TableColumn col = colModel.getColumn(i);
  16. col.sizeWidthToFit();
  17. col.setPreferredWidth(col.getWidth() + 5);
  18. col.setMaxWidth(col.getWidth() + 5);
  19. }
  20. JScrollPane sp = new JScrollPane(table);
  21. setLayout(new BorderLayout());
  22. add(sp, BorderLayout.CENTER);
  23. }
  24. public void dispose() {
  25. tableModel.stopRequest();
  26. }
  27. protected void finalize() throws Throwable {
  28. dispose();
  29. }
  30. public static JFrame createFramedInstance() {
  31. final ThreadViewer viewer = new ThreadViewer();
  32. final JFrame f = new JFrame("ThreadViewer");
  33. f.addWindowListener(new WindowAdapter() {
  34. public void windowClosing(WindowEvent e) {
  35. f.setVisible(false);
  36. f.dispose();
  37. viewer.dispose();
  38. }
  39. });
  40. f.setContentPane(viewer);
  41. f.setSize(500, 300);
  42. f.setVisible(true);
  43. return f;
  44. }
  45. public static void main(String[] args) {
  46. JFrame f = ThreadViewer.createFramedInstance();
  47. // For this example, exit the VM when the viewer
  48. // frame is closed.
  49. f.addWindowListener(new WindowAdapter() {
  50. public void windowClosing(WindowEvent e) {
  51. System.exit(0);
  52. }
  53. });
  54. // Keep the main thread from exiting by blocking
  55. // on wait() for a notification that never comes.
  56. Object lock = new Object();
  57. synchronized ( lock ) {
  58. try {
  59. lock.wait();
  60. } catch ( InterruptedException x ) {
  61. }
  62. }
  63. }
  64. }