gpt4 book ai didi

java - 无法为 JOptionPane.createDialog 创建的 JDialog 设置未修饰

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

我从 JOptionPane 创建了 JDiolog

        var pane = new JOptionPane(e.getMessage(),JOptionPane.ERROR_MESSAGE,JOptionPane.DEFAULT_OPTION);
var dialog = pane.createDialog("Error");
dialog.setUndecorated(true);
dialog.setBackground(new Color(0, 0,0,78));
dialog.setVisible(true);
return;

但是这段代码抛出异常

Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The dialog is displayable.
at java.desktop/java.awt.Dialog.setUndecorated(Dialog.java:1265)
at com.quiz.server.LoginDialog.lambda$new$1(LoginDialog.java:56)
blalablablabla.....

但我注释掉了这些行

    dialog.setUndecorated(true);
dialog.setBackground(new Color(0, 0,0,78));

然后就可以了

最佳答案

以下代码片段将显示没有修饰的 JOptionPane 对话框:

    boolean defaultLFDecorated = JDialog.isDefaultLookAndFeelDecorated();
try {
JDialog.setDefaultLookAndFeelDecorated(true);
JOptionPane pane = new JOptionPane("This is a message", JOptionPane.ERROR_MESSAGE, JOptionPane.DEFAULT_OPTION);
JDialog dialog = pane.createDialog("Error");
dialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
pane.setOpaque(false);
ArrayList<Component> components = new ArrayList<Component>(Arrays.asList(pane.getComponents()));
while(!components.isEmpty()) {
Component c = components.remove(0);
if(c instanceof JComponent) {
((JComponent)c).setOpaque(false);
}

if(c instanceof Container) {
components.addAll(Arrays.asList(((Container)c).getComponents()));
}
}
dialog.setBackground(new Color(0, 0, 0, 78));
dialog.setVisible(true);
dialog.dispose();
}
finally {
JDialog.setDefaultLookAndFeelDecorated(defaultLFDecorated);
}

关于java - 无法为 JOptionPane.createDialog 创建的 JDialog 设置未修饰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56739063/

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