Java 在JDialog中放弃控制

Java 在JDialog中放弃控制,java,swing,jframe,jdialog,Java,Swing,Jframe,Jdialog,我有一个JFrame,它创建了一个无模式JDialog。在某些情况下,我可能总是传递给JDialog构造函数,我希望JDialog保持可见,但控制返回到调用JFrame。用户随后可以与JDialog交互或关闭JDialog 我已经研究过了,但还没有找到一种方法。感谢您的任何建议/帮助 在显示对话框后,您是否尝试过简单地调用frame.toFront 比如说, import java.awt.Dialog.ModalityType; import javax.swing.JDialog; impo

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


我已经研究过了,但还没有找到一种方法。感谢您的任何建议/帮助

在显示对话框后,您是否尝试过简单地调用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();
   }
}

在显示对话框后,您是否尝试过简单地调用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();
   }
}

+一个比我的建议更简单的解决办法我今天学到了一些东西。不确定单线解决方案是否真的需要SSCCE,特别是因为GUI不是在EDT上创建的。Dialog以依赖于平台的方式覆盖了toBack,使其成为一个不太吸引人的替代方案;SCCEE使检查变得很容易。@装满鳗鱼的气垫船-frame.toFront;-我喜欢!谢谢。+1比我的建议更简单的解决办法我今天学到了一些东西。不确定单线解决方案是否真的需要SSCCE,特别是因为GUI不是在EDT上创建的。Dialog以依赖于平台的方式覆盖了toBack,使其成为一个不太吸引人的替代方案;SCCEE使检查变得很容易。@装满鳗鱼的气垫船-frame.toFront;-我喜欢!谢谢