【问题标题】:FileDialog doesn't show after get input from console从控制台获取输入后 FileDialog 不显示
【发布时间】:2013-12-12 15:42:56
【问题描述】:

当我从控制台获得一些输入后想要打开 FileDialog 时,它会失败。 请参阅下面的代码。 当我第一次调用openFileDialog 然后chooseOption 它工作正常。 有人知道这怎么可能吗?

public class SomeClass
{
int choice = 2;
Scanner keyboard;
String filter = "*.xml";

public void mainMenu() {
    keyboard = new Scanner(System.in);      
    choice = ChooseOption();    
    FileDialog loadDialog = openFileDialog("Choose file", filter);

    useInfo(loadDialog);
}

public int ChooseOption() {
    System.out.println("Make your choice: \n"
                        + "0) option A \n"
                        + "1) option B");

    try {
        choice = keyboard.nextInt();
    } catch(Exception e) {          
        System.out.println("Invalid input, try again.\n");
        ChooseOption();
    }
    return choice;
}

public FileDialog openFileDialog(String title, String filter) {
    System.out.println("Which file you want to use? \n");       

    FileDialog loadDialog = new FileDialog(new Frame(), title , FileDialog.LOAD);
    loadDialog.setFile(filter);
    //loadDialog.pack();
    loadDialog.setVisible(true);    

    return loadDialog;      
}

public void useInfo(FileDialog loadDialog) {
    if( loadDialog == null || loadDialog.getFile() == null ) {
        useDefaultFile();
        doSomthing();
    } else {
        doSomthingElse();
    }
}

}

【问题讨论】:

  • 它根本不显示,代码看起来像在无限循环中。但它不会崩溃
  • 就显示对话框而言似乎工作正常
  • 发布完整课程,以便人们尝试并快速发现问题。
  • @melc 但它没有显示,很奇怪。
  • 应该有框架,可能在其他窗口后面。

标签: java console user-input filedialog


【解决方案1】:

FileDialog 显示为 frame,但它可能在其他 Active Windows. 后面

【讨论】:

    【解决方案2】:

    以下代码使用 jdk6,

    import java.awt.FileDialog;
    import java.awt.Frame;
    import java.util.Scanner;
    
    public class Dialog {
    
        int choice = 2;
        Scanner keyboard;
        String filter = "*.xml";
    
        public void mainMenu() {
            keyboard = new Scanner(System.in);
    
            choice = ChooseOption();
            FileDialog loadDialog = openFileDialog("Choose file", filter);
    
            useInfo(loadDialog);
        }
    
        public int ChooseOption() {
            System.out.println("Make your choice: \n"
                    + "0) option A \n"
                    + "1) option B");
            try {
                choice = keyboard.nextInt();
            } catch (Exception e) {
                System.out.println("Invalid input, try again.\n");
                ChooseOption();
            }
            return choice;
        }
    
        public FileDialog openFileDialog(String title, String filter) {
            System.out.println("Which file you want to use? \n");
    
            FileDialog loadDialog = new FileDialog(new Frame(), title, FileDialog.LOAD);
            loadDialog.setFile(filter);
            loadDialog.setModal(true);
            //loadDialog.pack();
            loadDialog.setVisible(true);
    
            return loadDialog;
        }
    
        public void useInfo(FileDialog loadDialog) {
            if (loadDialog == null || loadDialog.getFile() == null) {
                System.out.println("useDefaultFile();");
                System.out.println("doSomthing();");
            } else {
                System.out.println("doSomthingElse();");
            }
        }
    
        public static void main(String[] args) {
            Dialog d = new Dialog();
            d.mainMenu();
        }
    }
    

    当显示对话框时,它很有可能位于其他活动窗口的后面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多