【发布时间】:2016-01-19 15:55:48
【问题描述】:
我有一个LoginScreen 和一个MainWindow。连接DB成功后,会出现LoginScreendisposed和MainWindow。
我有一个按钮有ActionListener 用于创建JOptionPane。代码实际成功运行。我认为Painting 有三个问题。让我一一解释问题;
问题 1;
UIManager UI=new UIManager();
Object paneBG = UI.get("OptionPane.background");
Object panelBG = UI.get("Panel.background");
UI.put("OptionPane.background", Color.red);
UI.put("Panel.background", Color.red);
String[] buttons2 = { "EXIT", "OK" };
int rc2 = JOptionPane.showOptionDialog(MainWindow.this,
panel,
"User Input",
JOptionPane.INFORMATION_MESSAGE,
JOptionPane.PLAIN_MESSAGE,
icon,
buttons2,
buttons2[1]
);
UI.put("OptionPane.background", paneBG);
UI.put("Panel.background", panelBG);
我使用上述代码更改background color 的OptionPane,显示给用户并将UI 颜色回滚为原始颜色。
如果我直接运行MainWindow 并单击按钮,颜色会改变(确保面板和按钮区域在 OptionPane 中保持原始颜色,但其他 OptionPane 区域变为红色。这是另一个问题)像这样;
但是当我来自LoginScreen 时,登录尝试成功,LoginScreen disposed 和 MainWindow 出现。我点击了同一个按钮,但OptionPane 现在没有画,像这样;
问题 2;
我在 MainWindow 中有另一个按钮,它创建了另一个 OptionPane。我直接运行 MainWindow 并单击第一个按钮(它具有更改 UI 颜色和回滚操作),关闭它而不是单击第二个按钮(具有另一个 OptinPane) OptionPane 仍然绘制,因此 UI 颜色不会回滚到默认值。
问题 3;
如果我们解决了第一个和第二个问题,我该如何制作transparent 这些内部面板(其中有一个标签和文本字段面板和一个按钮)
【问题讨论】:
-
如果你重复使用同一个对话框,为什么不创建一个自定义的
JDialog? -
因为我需要为 JDialog 中的每个按钮编写 ActionListener。我认为 OptionPane 易于使用。实际上我需要对 OptionPanes 进行渐变绘画。如果我不能解决这些问题,我会求助于 JDialog。
-
然后发布MCVE。请务必将您的代码复制粘贴到新项目,并确保在将其发布到此处之前编译并运行。
-
既然您要求“输入”,为什么要使用“showOptionDialog”而不是“showInputDialog”?
标签: java paint joptionpane uimanager