用户表单在单独的类中;可以选择行动前的主要目标

时间:2013-09-27 21:07:58

标签: java forms

我用过#34;免费设计" Netbeans IDE中的布局(管理器)可以直观地创建带有按钮,文本框,复选框等的表单。这很容易;看起来很棒。我很高兴。

两个按钮完全符合我的要求。一个["浏览..."]打开一个FileChooser showOpenDialog,然后用所选目录填充其中一个文本框。 EXIT按钮也可以。我很高兴。第三个按钮可以解决大事,但我对某些事情感到困惑,所以它处于暂停状态。

所以我将(不可编辑/锁定)代码复制到名为GUIform.java的文件中(所以我可以编辑它)。表格显示并按上述方式工作。 "主要" file(Search.java)看起来像这样:

package guiform; // This line also appears in GUIform.java.

public class Search  {

  public static void main(String[] args)  {
    java.awt.EventQueue.invokeLater
    (new Runnable()
    {
        @Override
        public void run()
        {
          GUIform myGUI = new GUIform();
          System.out.println("X");
        }
    }
    );
  }
}

该文件过去由package, class, main以及GUIform方法正文中的printlnrun行组成。 println在表单被删除之前执行"被解雇"。有点困惑的研究使我添加invokeLaterRunnable的东西,但没有任何改变。

我的问题是," 如何让main等待用户提交表单?"在这种情况发生之前没有什么好事可以发生,如果println在表单即使有时间显示之前做了它的事情,那么更大的计划也不会起作用,因为需要表单输入。

(这似乎是最基本的情况,但我的两篇文章总共有近2000页,大多数例子都很稀疏。)

1 个答案:

答案 0 :(得分:0)

有效。我向GUIform.java添加了代码以捕获鼠标单击并且SEARCH按钮使用用户输入的基于Windows的文件名模式(我将其转换为正则表达式)来执行应有的操作。

主要是:

package guiform;
import java.awt.event.ActionEvent;
public class Search  {

  public static void main(String[] args)  {

    GUIform myGUI = new GUIform() {

      @Override
      public void actionPerformed(ActionEvent e) {
      }
    };    
  }
}

这是GUI的最重要的补充,SEARCH按钮的代码,我主要是从表单创建工具生成的代码中收集的:

  private void jbSearchActionPerformed(ActionEvent evt) {                                         
    EventQueue.invokeLater
    (new Runnable()
    {
        @Override
        public void run()
        {

          FileVisitor visitor = new FileVisitor();

          try {
                Path startPath = Paths.get(GUIform.getjtRootNode());
                Files.walkFileTree(startPath, visitor);
          }
          catch (IOException ex) {
            System.out.println("Sh00t!!" + ex);
          }
        }
    }
    );

  }                                        

我刚刚从“Java傻瓜一体机”中学到的是,实际上,任何基于GUI的应用程序必须至少有两个线程。直到那时我才意识到的是,我终于通过折磨试验和错误的方式做到了这一点,这开始变得完美[-ish]感觉。