zoukankan      html  css  js  c++  java
  • SwingConsole

           Java的Swing默认不是线程安全的,类的调度应该由线程分派器来安排。如果每个类都各个各的调度,有可能造成线程紊乱,带来一些难以检测的错误。

           对于编写实验性代码(每次都只有一个JFrame),如果每次都要编写重复的main函数,显然太浪费精力。利用Java的反射机制,可以编写一个通用的“Swing控制台”用作调度其他类。另外,将代码做一些简单的修改就可以应用于具体应用。

     1 import java.util.*;
     2 import java.lang.reflect.*;
     3 import javax.swing.*;
     4 import java.awt.*;
     5 
     6 class SwingConsole {
     7 
     8     public static void main(String[] args) {
     9         String className;
    10         //get class name
    11         if(args.length > 0){
    12             className = args[0];
    13         }
    14         else{
    15             System.out.println("Enter JFrame class name (e.g java.util.Date): ");
    16             Scanner in = new Scanner(System.in);
    17             className = in.next();
    18         }
    19 
    20         try{
    21             //get class
    22             final Class cl = Class.forName(className);
    23             if(cl.getSuperclass() != JFrame.class){
    24                 //is not a JFrame
    25                 System.out.println("It is not a JFrame class"); 
    26                 return;
    27             }
    28             else{
    29                 //get class constructor
    30                 final Constructor constructor = cl.getConstructor();
    31             
    32                 //run JFrame
    33                 EventQueue.invokeLater(new Runnable(){
    34                     public void run(){
    35                         try{
    36                             JFrame frame = (JFrame) constructor.newInstance();
    37                             frame.setTitle(frame.getClass().getName());
    38                             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    39                             frame.setVisible(true);
    40                         }
    41                         catch(Exception e){
    42                             e.printStackTrace();
    43                         }
    44                     }
    45                 });
    46             }
    47         }
    48         catch(Exception e){
    49             e.printStackTrace();
    50         }
    51     }
    52 }
  • 相关阅读:
    关于面试总结8-http协议相关面试题
    关于面试总结7-linux篇
    关于面试总结6-SQL经典面试题
    关于面试总结5-python笔试题(递归)
    关于面试总结4-python笔试题
    关于面试总结3-SQL查询
    关于面试总结2-SQL学生表
    关于面试总结1-SQL学生表
    浅谈多变量线性回归中的数据规范化
    浅谈KL散度
  • 原文地址:https://www.cnblogs.com/7hat/p/3724730.html
Copyright © 2011-2022 走看看