0

ボタン、テキストボックス、チェックボックスなどを含むフォームを視覚的に作成するために、Netbeans IDE の「フリーデザイン」レイアウト (マネージャ) を使用しました。簡単でした。素晴らしく見える。私は幸せでした。

2 つのボタンはまさに私が望むことを行います。1 つの ["Browse..."] で が開きFileChooser showOpenDialog、選択したディレクトリがテキスト ボックスの 1 つに表示されます。EXIT ボタンも機能します。私は大喜びしました。大きなことが起こる第3のボタンがあるのですが、何か混乱しているので保留中です。

そこで、(編集不可/ロックされた)コードを GUIform.java という名前のファイルにコピーしました(編集できるようにするため)。フォームが表示され、上記のように機能します。「メイン」ファイル (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行で構成されていました。フォームが「破棄」される前に実行されます。少し混乱した調査で、と を追加しましたが、何も変わりませんでした。printlnrunprintlninvokeLaterRunnable

私の質問は、「ユーザーがフォームを送信するのを待つにはどうすればmainよいですか? 」 それが起こるまで何も良いことは起こりません.printlnフォームが表示される前に何かが起こると、より大きな計画は機能しません.フォーム入力が必要です。

(これは最も基本的な状況のようですが、私の 2 つのテキストは合計で 2000 ページ近くあり、ほとんどの例はかなりまばらです。)

4

1 に答える 1

0

できます。GUIform.java にコードを追加して、マウス クリックをキャッチし、[検索] ボタンは、ユーザーが入力した 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ベースのアプリには少なくとも2つのスレッドが必要であるということです。ちょうどその時まで私が気づかなかったのは、私が最終的にそうすることができたということです.

于 2013-09-29T00:53:39.873 に答える