Java 在JDialog中放弃控制
我有一个JFrame,它创建了一个无模式JDialog。在某些情况下,我可能总是传递给JDialog构造函数,我希望JDialog保持可见,但控制返回到调用JFrame。用户随后可以与JDialog交互或关闭JDialogJava 在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
我已经研究过了,但还没有找到一种方法。感谢您的任何建议/帮助 在显示对话框后,您是否尝试过简单地调用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;-我喜欢!谢谢