放弃JDialog中的控制权

时间:2014-08-23 18:29:43

标签: java swing jframe jdialog

我有一个创建无模式JDialog的JFrame。在某些情况下(可能总是),我传递给JDialog构造函数,我希望JDialog保持可见但控制返回到调用JFrame。用户随后可以与JDialog交互或关闭。

我已经研究过,但还没有办法做到这一点。任何建议/帮助表示赞赏。

1 个答案:

答案 0 :(得分:5)

您是否尝试在显示对话框后调用frame.toFront()

例如,

import java.awt.Dialog.ModalityType;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class RelinquishControl {
   public static void main(String[] args) {
      JTextField textField = new JTextField("Fubar", 15);
      textField.selectAll();
      JPanel panel = new JPanel();
      panel.add(textField);
      final JFrame frame = new JFrame("Frame");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.add(panel);
      frame.pack();
      frame.setLocationRelativeTo(null);
      frame.setVisible(true);

      textField = new JTextField("Fubar", 15);
      textField.selectAll();
      panel = new JPanel();
      panel.add(textField);
      final JDialog dialog = new JDialog(frame, "Dialog", ModalityType.MODELESS);
      dialog.add(panel);
      dialog.pack();
      int x = frame.getLocation().x + 200;
      int y = frame.getLocation().y + 200;
      dialog.setLocation(x, y);
      dialog.setVisible(true);

      frame.toFront();
   }
}