Java没有其他类的响应

时间:2014-02-26 23:59:05

标签: java class user-interface jframe void

我有这个GUI程序,我试图基本上复制Windows CMD。由于我在这个程序中有很多功能,所以我决定将部分代码放在不同的类中。但它没有回应。

       if(command.size()<2 && command.size()>0) {
            switch(command.get(0)) {
                case "dt":
                    getDateTime a = new getDateTime();
                    a.Start();
                    break;
                // other case(s) down below
            }
        }

这是geDateTime类

public class getDateTime {
    public static void Start() {
        Terminal t = new Terminal();
        try {
            DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
            Date date = new Date();
            String s = dateFormat.format(date).toString();
            t.print(s);
        }catch(Exception e){ e.printStackTrace(); }
    }
}

这是print();在主类中无效......

public static void print(String s) {
        Color c = Color.WHITE; // prints white text to JFrame
        Style style = output.addStyle("Style", null);
        StyleConstants.setForeground(style, c);
        try{
            document.insertString(document.getLength(), s, style);
        }catch(Exception e){e.printStackTrace();}
    }

现在,当我输入访问getDateTime类的命令时,程序冻结,我无法输入任何内容。但是,如果我只是将getDateTime类放入主类中的void中,它就可以正常工作;但是将一切都放入主类是个问题,因为某些函数可能有数百行代码。

程序冻结时不会产生错误。

1 个答案:

答案 0 :(得分:1)

在您之前的代码段中,代码尝试创建新的终端,而不是使用现有的终端。

试试这个:

private static void print() {
    DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
    Date date = new Date();
    String s = dateFormat.format(date).toString();
    print(s);
}

在访问方法中:

case "dt":
    print();
    break;

更新:在旁注中,尽量避免静电。一般来说,这是不好的做法。见https://stackoverflow.com/a/7026563/1216965