gpt4 book ai didi

java - 多个 JDialog 模式到父级?

转载 作者:行者123 更新时间:2023-12-01 09:15:49 25 4
gpt4 key购买 nike

我有一个 JFrame,可以在单击按钮时启动一个对话框。我想要一个不同的按钮来启动 2 个以上的父框架模态对话框(以允许并排比较和 2 个对话框交互,但不允许用户与父框架交互)。是否可以使用对话框来完成此操作,还是应该使用框架?

最佳答案

同样,您可以创建一个 JDialog 模式,并将其父窗口设置为主 JFrame,并将第二个对话框设置为非模式,并将其父窗口设置为第一个对话框。像这样的东西:

import java.awt.Dialog.ModalityType;
import java.awt.Dimension;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class MultipleDialogs {
@SuppressWarnings("serial")
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
final JFrame mainFrame = new JFrame("Main JFrame");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setPreferredSize(new Dimension(400, 300));

JPanel panel = new JPanel();
panel.add(new JButton(new AbstractAction("Two Dialogs") {

@Override
public void actionPerformed(ActionEvent e) {
JDialog dialog1 = new JDialog(mainFrame, "Dialog 1 -- modal", ModalityType.APPLICATION_MODAL);
dialog1.setPreferredSize(new Dimension(200, 100));
dialog1.pack();
dialog1.setLocationByPlatform(true);

JDialog dialog2 = new JDialog(dialog1, "Dialog 2 -- nonmodal", ModalityType.MODELESS);
dialog2.setPreferredSize(new Dimension(200, 100));
dialog2.pack();
dialog2.setLocationByPlatform(true);
dialog2.setVisible(true);

dialog1.setVisible(true);
}
}));

mainFrame.add(panel);
mainFrame.pack();
mainFrame.setLocationRelativeTo(null);
mainFrame.setVisible(true);
});
}
}

确保将模式对话框设置为在显示第一个对话框之后可见。

关于java - 多个 JDialog 模式到父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40555474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com