Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在actionperformed中创建JDialog_Java_Multithreading_Swing_Modal Dialog_Jdialog - Fatal编程技术网

Java 在actionperformed中创建JDialog

Java 在actionperformed中创建JDialog,java,multithreading,swing,modal-dialog,jdialog,Java,Multithreading,Swing,Modal Dialog,Jdialog,我正在开发一个swing应用程序,用于读取JSON文件,然后将其写入文件。操作项将列在一个JTable行中,该行显示文件的元数据,每行的最后一列都有一个按钮,用于将JSON打印到本地文件中 在执行的操作中,我计划显示一个自定义JDialog,以防止在UI中执行任何操作,这将阻止所有进一步的步骤,例如编写文件 在显示JDialog后,是否可以启动一个线程来调用函数进行文件重新操作?我用线程尝试了这种方法,但也被阻塞了 @Override public void actionPerforme

我正在开发一个swing应用程序,用于读取JSON文件,然后将其写入文件。操作项将列在一个JTable行中,该行显示文件的元数据,每行的最后一列都有一个按钮,用于将JSON打印到本地文件中

在执行的操作中,我计划显示一个自定义JDialog,以防止在UI中执行任何操作,这将阻止所有进一步的步骤,例如编写文件

在显示JDialog后,是否可以启动一个线程来调用函数进行文件重新操作?我用线程尝试了这种方法,但也被阻塞了

@Override
    public void actionPerformed(ActionEvent e) {
        JButton printerButton = (JButton) e.getSource();
        String ac = printerButton.getActionCommand();
        System.out.println("ac = " + ac);
        
        /*
         * **Start JDialog for blocking any operation on the window** 
         */
        
        /*
         * **Start a thread for writing a file**
         */
    }

那么,你是想在后台进行操作吗?对于这种特殊情况,请使用Swing Worker放置在对话框后面的代码。在关闭“模式”对话框之前,setVisible(true)不会执行。因此,在显示对话框之前,需要启动线程(或SwingWorker)。SwingWorker最容易使用,因为您将知道任务何时完成,您只需在SwingWorker的
done()
方法中添加逻辑即可关闭对话框。有关更多信息和示例,请阅读上的Swing教程。