package com.langtech.plm.mpart; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; public class MainFrame extends JFrame { private JTextField textField; private Object syncObject = new Object(); public MainFrame() { super("Main Window"); textField = new JTextField(20); JButton button = new JButton("Open Dialog"); ArrayList childrenList = new ArrayList(); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 创建并显示模态对话框 JComboBox a = new JComboBox(); a.addItem("1"); System.out.println("0"); System.out.println(syncObject); for (int i = 0; i < 5; i++) { DialogFrame dialog = new DialogFrame(MainFrame.this,a,childrenList); dialog.setVisible(true); // 等待对话框关闭后执行的操作 dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosed(java.awt.event.WindowEvent e) { System.out.println("21121212"); } }); } System.out.println("2"); System.out.println(childrenList.size()); // DialogFrame dialog = new DialogFrame(MainFrame.this,a,syncObject); // dialog.setVisible(true); // // 等待对话框关闭后执行的操作 // dialog.addWindowListener(new java.awt.event.WindowAdapter() { // @Override // public void windowClosed(java.awt.event.WindowEvent e) { // // System.out.println("1"); // } // }); // System.out.println("2"); // synchronized (syncObject) { // // try { // // Wait until notified // System.out.println("4"); // syncObject.wait(); // // } catch (InterruptedException ex) { // Thread.currentThread().interrupt(); // Restore interrupted status // System.err.println("Thread was interrupted."); // } // System.out.println("2"); // // } System.out.println("3"); } }); JPanel panel = new JPanel(); panel.setLayout(new FlowLayout()); panel.add(textField); panel.add(button); this.add(panel); this.pack(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); // 居中显示 } public static void main(String[] args) { EventQueue.invokeLater(() -> { MainFrame frame = new MainFrame(); frame.setVisible(true); }); } }