我在Java动态应用程序中有以下JForm
,我需要下载一些我不希望在GUI中显示它的文件,我希望程序通过命令行运行。
我们可以以相同的形式进行,还是需要为它创建一个单独的桌面应用程序?
这是代码..
public class LoginForm extends javax.swing.JFrame
{
\\some other code
\\ main function of form
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
try {
if(args.length > 0)
{
setGuiDisplay(1);
for (String s: args) {
System.out.println(s);
}
}
else
{
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(LoginForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(LoginForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(LoginForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(LoginForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
public static void setGuiDisplay(int GuiDisplay) {
LoginForm.GuiDisplay = GuiDisplay;
//Start Downloading
FrmMain frm1= new FrmMain();
frm1.StartDownload();
}
答案 0 :(得分:0)
是的,当没有GUI代码与下载混合时,从不调用setVisible(true)
是可能的,如错误消息。可能是进度动画已完成,但没有任何效果,因为没有显示任何内容。
这是一个重构问题,将下载与GUI分开;这是有道理的。
对于其他搜索者:Java也可以无头安装,即:一些没有GUI的linux系统,就像一些简约的服务器。 有人可能会遇到问题。
答案 1 :(得分:0)
当然,您可以将某些内容下载到Swing应用程序中。您需要让这个过程在一个单独的线程中运行。
查看 SwingWorker 。该组件将帮助您设计与GUI操作并行运行的线程。或者,如果下载后无需在GUI中显示任何内容,则可以使用标准线程。