簡體   English   中英

FileChooserBuilder未顯示在屏幕中央

[英]FileChooserBuilder not displayed in center of screen

我目前正在嘗試使用Netbeans Platform API中的FileChooserBuilder。 以下代碼完成了netbeans模塊的動作。 運行時,它不會顯示在窗口/屏幕的中心,而是顯示在屏幕左下角的某處。 是否有可能使該對話框顯示在屏幕中間?

public final class LoadProjectAction implements ActionListener {

    public void actionPerformed(ActionEvent e) {

        File home = new File(
            System.getProperty("user.home")
            + File.separator + "lib");

        FileChooserBuilder fileChooserBuilder = new FileChooserBuilder(
            LoadProjectAction.class);
        fileChooserBuilder.setTitle("Load project");
        fileChooserBuilder.setDefaultWorkingDirectory(home);
        fileChooserBuilder.setApproveText("Load");
        fileChooserBuilder.setDirectoriesOnly(true);


        File directory = fileChooserBuilder.showOpenDialog();

        if (directory != null) {
            return; // nothing to do
        }

        // do some processing here
    }

}

感謝您的想法。

找到了解決方案:

您必須獲取JFileChooser實例並在其showOpenDialog方法中設置正確的父組件(然后將其相對於應用程序的主窗口放置)。 但是,由於NetBeans試圖在線程上安全地工作-它僅允許一個線程訪問組件,因此必須使用EventQueue.invokeLater。

public final class LoadProjectAction implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                // output window
                InputOutput io = IOProvider.getDefault().getIO("File search", true);
                io.select();

                // start in user home directory
                File initialDirectory = new File(
                    System.getProperty("user.home")
                    + File.separator + "lib");

                FileChooserBuilder fileChooserBuilder = new FileChooserBuilder(
                    "LoadProjectAction");
                fileChooserBuilder.setTitle("Load project");
                fileChooserBuilder.setDefaultWorkingDirectory(initialDirectory);
                fileChooserBuilder.setApproveText("Load");
                fileChooserBuilder.setDirectoriesOnly(true);

                JFileChooser jfc = fileChooserBuilder.createFileChooser();
                int value = jfc.showOpenDialog(WindowManager.getDefault().getMainWindow());

                if (value != JFileChooser.APPROVE_OPTION) {
                    return; // nothing to do
                }

                // process selection
            }
        });

    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM