SwingConsole
Java的Swing默认不是线程安全的,类的调度应该由线程分派器来安排。如果每个类都各个各的调度,有可能造成线程紊乱,带来一些难以检测的错误。
对于编写实验性代码(每次都只有一个JFrame),如果每次都要编写重复的main函数,显然太浪费精力。利用Java的反射机制,可以编写一个通用的“Swing控制台”用作调度其他类。另外,将代码做一些简单的修改就可以应用于具体应用。
import java.util.*;
import java.lang.reflect.*;
import javax.swing.*;
import java.awt.*; class SwingConsole { public static void main(String[] args) {
String className;
//get class name
if(args.length > 0){
className = args[0];
}
else{
System.out.println("Enter JFrame class name (e.g java.util.Date): ");
Scanner in = new Scanner(System.in);
className = in.next();
} try{
//get class
final Class cl = Class.forName(className);
if(cl.getSuperclass() != JFrame.class){
//is not a JFrame
System.out.println("It is not a JFrame class");
return;
}
else{
//get class constructor
final Constructor constructor = cl.getConstructor(); //run JFrame
EventQueue.invokeLater(new Runnable(){
public void run(){
try{
JFrame frame = (JFrame) constructor.newInstance();
frame.setTitle(frame.getClass().getName());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
catch(Exception e){
e.printStackTrace();
}
}
});
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
SwingConsole的更多相关文章
- GUIForDebug
package gui; import org.luaj.vm2.Globals; import org.luaj.vm2.LuaValue; import org.luaj.vm2.ast.Chun ...
- JTree demo
JFrame居中方法一: setLocationRelativeTo(null); 注意:必须在整个frame初始化完成后再加上此语句,否则将显示在屏幕右下角 方法二: private Dimen ...
- JFrame、JDialog close
package common; import javax.swing.JFrame; import javax.swing.SwingUtilities; /*2015-5-26*/ public c ...
- JComboBox
package swing.combox; import java.awt.FlowLayout; import javax.swing.DefaultComboBoxModel; import ja ...
- JAVA简单Swing图形界面应用演示样例
JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...
- 【Java】边框总结
[Java]边框总结 Table of Contents 1 例子代码与结果 2 javax.swing.border 3 BorderFactory 4 LineBorder 5 MatteBord ...
- java图形用户界面之列表框
列表框通过Swing组件JList产生,其总是在屏幕上占据固定行数的空间.如果要得到列表框中被选中的元素,只需调用getSelectedValuesList(),它可以产生一个字符串数组,内容为被选中 ...
- java图形界面之图形化按钮
要将按钮图形化,只需创建一个ImageIcon对象,将图形路径赋予ImageIcon对象,然后将该对象传递给按钮即可. 此处涉及eclipse中图形的路径设置,包括(项目路径下.非项目路径下.相对路径 ...
随机推荐
- sql 作业+游标 自动备份数据库
前言 昨天有个同事在客户的服务器上面弄数据库,不小心执行了一条 sql 语句 TRUNCATE TABLE xxx 碉堡了吧,数据全没了 - - ,然后就是在网上拼命的搜索关于数据恢复的软件,搞了一 ...
- angular.js 数字
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- 五分钟看懂js关键字this
this是js里面很常用的关键字,而灵活的js也赋予了这个关键字无穷的生命力,相信你也有被它糊弄的时候,我总结了一个6字原则,大部分场合都能清醒分辨this到底指向who,跟大家分享一下,欢迎指正. ...
- ThinkPHP框架下,jq实现在div中添加标签并且div的大小会随之变化
php初学者,有什么不对的还请指正. 首先是在html页面中用jq实现添加标签:divAchivePersonnal是select所在的div的外层div,divselectAchivePersonn ...
- Window.onload事件
window.onload是一个事件,当文档加载完成之后就会触发该事件,可以为此事件注册事件处理函数,并将要执行的脚本代码放在事件处理函数中,于是就可以避免获取不到对象的情况
- yii2源码学习笔记(四)
继续了解组件Component.php /** * Returns a value indicating whether a property is defined for this componen ...
- css实现三角的一些方法
css实现三角没有想象中的那么难,只要明白border的各种属性的意思就很好明白css三角是如何实现的. 一下是几个很简单的例子: css三角形状的制作: css样式: .trian ...
- 接受POST表单传过来的信息 可以用foreach循环进行遍历操作
if(isset($_POST['Goods'])){ foreach($_POST['Goods'] as $_k =>$_v){ ...
- python中对文件、文件夹的操作需要涉及到os模块和shutil模块。
创建文件:1) os.mknod("test.txt") 创建空文件2) open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件 创建 ...
- WPF感悟(1)
原文地址:http://liutiemeng.blog.51cto.com/120361/91632 1.UI层与逻辑层要尽可能地剥离(解耦). 2.Routed Event和Command比Even ...