2012-07-30 66 views
0

我已经用纯文本或CLI构建了一个Java程序。现在我想在它上面构建一个GUI。 回到学校时,我只学会了如何围绕GUI构建一个程序,而不是程序周围的GUI。如何将GUI添加到完成的程序?

我该怎么做呢?

谢谢。

编辑:显然我被完全误解了。除了输入参数之外,我还拥有诸如进度信息和我在CLI模型中使用字符串显示的内容。我已经知道构建GUI和图形输入界面的基础知识。

+5

您可以从一些研究开始,尝试阅读http://docs.oracle.com/javase/tutorial/uiswing/,当您完成该任务时,在纸上制作一些您想实现的草图,然后合并你学到了什么:) – MadProgrammer 2012-07-30 21:19:48

+5

哦,如果你已经从视图和主持人分离模型,那么你只需要通过GUI视图交换CLI视图;) – 2012-07-30 21:22:11

+0

“学会了如何围绕GUI而不是GUI来构建程序围绕着这个计划“ - 会不会有更多的学校帮助你划分两个经常是非常独立的问题。 – 2012-07-30 21:37:53

回答

3

在编写GUI之前,重构CLI直到它没有做任何实际的工作。也就是说,在输入采集和数据操作之间有明确的分离屏障。

例如,想象一个管理某些库存的CLI。这将是不好的:

if(command.equals("additem")) { 
    int itemNumber = Integer.parseInt(tokens[1]); 
    int quantity = Integer.parseInt(tokens[2]); 
    if(items.contains(itemNumber) { // exists, add to current 
     int currentQuantity = items.get(itemNumber); 
     int newQuantity = quantity + currentQuantity; 
     items.put(itemNumber,newQuantity); 
    } else { // doesn't exist, make new entry 
     items.put(itemNumber,quantity); 
    } 
    continue; 
} 

这是好的,它做它应该做的。 CLI不是在做这项工作,而是其他一些界面。更好的方法是

if(command.equals("additem")) { 
    int itemNumber = Integer.parseInt(tokens[1]); 
    int quantity = Integer.parseInt(tokens[2]); 
    inventoryManager.addItem(itemNumber,quantity); 
    continue; 
} 

现在你所有的CLI都会收集输入,并将该输入传递给某个管理器。

一旦CLI中的EVERY命令采用“收集输入并将其传入某个管理器类”的格式,就可以开始制作GUI。在制作GUI时,可以调用与CLI中完全相同的方法,只需从GUI字段而不是CLI中获取数据即可!

+0

已经很多年了,在重温之后,我终于明白了这个答案。 – drum 2018-01-05 02:51:22