我用过#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
方法正文中的println
和run
行组成。 println
在表单被删除之前执行"被解雇"。有点困惑的研究使我添加invokeLater
和Runnable
的东西,但没有任何改变。
我的问题是," 如何让main
等待用户提交表单?"在这种情况发生之前没有什么好事可以发生,如果println
在表单即使有时间显示之前做了它的事情,那么更大的计划也不会起作用,因为需要表单输入。
(这似乎是最基本的情况,但我的两篇文章总共有近2000页,大多数例子都很稀疏。)
答案 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]感觉。