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 }

SwingConsole,布布扣,bubuko.com

时间: 2024-10-06 23:52:49

SwingConsole的相关文章

java图形界面之图形化按钮

要将按钮图形化,只需创建一个ImageIcon对象,将图形路径赋予ImageIcon对象,然后将该对象传递给按钮即可. 此处涉及eclipse中图形的路径设置,包括(项目路径下.非项目路径下.相对路径.绝对路径),相对路径前不加/,此处相对路径是相对于eclipse中项目文件夹而言的,绝对路径为图形所在未知的具体路径.以picture1.jpg(在H:/java/workspace/study/src/picture路径下)为例: 1.若将picture文件夹置于study/src路径(非项目路

GUIForDebug

package gui; import org.luaj.vm2.Globals; import org.luaj.vm2.LuaValue; import org.luaj.vm2.ast.Chunk; import org.luaj.vm2.ast.Exp; import org.luaj.vm2.ast.Stat; import org.luaj.vm2.ast.Visitor; import org.luaj.vm2.lib.jse.JsePlatform; import org.lua

JFrame、JDialog close

package common; import javax.swing.JFrame; import javax.swing.SwingUtilities; /*2015-5-26*/ public class SwingConsole { public static void run(final JFrame frame,final int width,final int height){ SwingUtilities.invokeLater(new Runnable() { @Override

JComboBox

package swing.combox; import static common.SwingConsole.run; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.

java 编程思想 22.11: java bean 案例代码

java 编程思想  22.11:   java bean 案例代码 thinking in java 4免费下载:http://download.csdn.net/detail/liangrui1988/7580155 package org.rui.swing.bean; import java.awt.Color; import java.awt.event.ActionListener; import java.awt.event.KeyListener; import org.rui.

JAVA 图形界面swing 创建按钮、文本域

package org.rui.swin; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import org.rui.utils.SwingConsole; public class Button1 extends JFrame{ private JButton button1=new JButton("button1"), button2=new JButton(

JAVA简单Swing图形界面应用示例

package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗口 * @author lenovo * */ public class HelloSwing { public static void main(String[] args) { JFrame frame=new JFrame("hello Swing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLO

TrackEvent 鼠标键盘各种事件

package com.wxq.learning; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; i

swing学习

1.Swing组件类的层次 Swing组件分从显示效果上分为两种类型:JComponent类和Window类: JComponent组件主要包括一些不能独立显示的组件(必须依附与其他组件才能显示). JPanel JTable JTree JTextArea JTextField JButton Window组件类主要包括可以独立显示的组件. JFrame JDialog Swing组件从功能上分为三种类型: 顶级组件(顶级容器,可以独立显示) JFrame.JApplet.JDialog.JW