我有一个创建无模式JDialog的JFrame。在某些情况下(可能总是),我传递给JDialog构造函数,我希望JDialog保持可见但控制返回到调用JFrame。用户随后可以与JDialog交互或关闭。
我已经研究过,但还没有办法做到这一点。任何建议/帮助表示赞赏。
答案 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();
}
}