- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 LoginScreen
和一个 MainWindow
。当 DB 连接尝试成功时,出现 LoginScreen disposed
和 MainWindow。
我有一个按钮有 ActionListener
用于创建 JOptionPane
。代码实际上成功地工作。我认为 Painting
有三个问题。让我一一解释问题;
问题一;
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);
我使用上面的代码更改 OptionPane
的 background color
,向用户显示并将 UI 颜色回滚到原始颜色。
如果我直接运行 MainWindow
并单击按钮,颜色会改变(确定面板和按钮区域在 OptionPane 中保持原始颜色,但其他 OptionPane 区域变为红色。这是另一个问题) 像这样;
但是当我来自 LoginScreen
时,登录尝试成功,出现 LoginScreen disposed
和 MainWindow。我点击同一个按钮,但 OptionPane
现在没有绘制,就像这样;
问题2;
我在 MainWindow 中有另一个按钮,它创建了另一个 OptionPane。我直接运行 MainWindow 并单击第一个按钮(它更改了 UI 颜色和回滚操作),关闭它而不是单击第二个按钮(它有另一个 OptinPane)OptionPane 仍然绘制,因此 UI 颜色不会回滚到默认值。
问题3;
如果我们解决了第一个和第二个问题,我怎样才能使这些内部面板透明
(其中有标签和文本字段面板和按钮)
最佳答案
首先,UIManager的公共(public)方法是静态的。创建 UIManager 的实例是不正确的、具有误导性的并且毫无意义。调用这些方法的正确方法是:
UIManager.put("OptionPane.background", Color.red);
其次,您可能不应该使用全局设置来更改颜色,尤其是动态更改。相反,通过创建 JOptionPane 的实际实例而不是使用静态便捷方法来设置相关对象的颜色:
static void setBackground(Component c,
Color color) {
if (c instanceof JTextField || c instanceof AbstractButton) {
return;
}
c.setBackground(color);
if (c instanceof Container) {
Component[] children = ((Container) c).getComponents();
for (Component child : children) {
setBackground(child, color);
}
}
}
int show(Icon icon,
JComponent panel) {
String[] buttons2 = { "EXIT", "OK" };
JOptionPane optionPane = new JOptionPane(panel,
JOptionPane.PLAIN_MESSAGE,
JOptionPane.DEFAULT_OPTION,
icon,
buttons2,
buttons2[1]);
setBackground(optionPane, Color.RED);
optionPane.createDialog(MainWindow.this, "User Input").setVisible(true);
Object value = optionPane.getValue();
int rc2 = JOptionPane.CLOSED_OPTION;
if (value instanceof String) {
rc2 = Arrays.asList(buttons2).indexOf(value);
}
return rc2;
}
您要小心区分消息类型 参数和选项类型 参数。将 INFORMATION_MESSAGE 和 PLAIN_MESSAGE 作为参数传递是永远不正确的。 documentation声明第四个和第五个参数分别是选项类型和消息类型;选项类型参数应该是 DEFAULT_OPTION、OK_CANCEL_OPTION、YES_NO_OPTION 等。
关于java - 按钮操作中的 UIManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881250/
此消息似乎某些包正在使用 UIManager["RCTView"] 不再受支持,但我不确定如何解决此问题 Accessing view manager configs directly off UIM
我正在尝试将 Nimbus LookandFeel 值覆盖到我的 Java Swing 应用程序。 当我尝试使用 UIManager.getLookAndFeelDefaults() 设置“nimbu
我已经安装了 react-navigation react-navigation react-native-gesture-handler 我正在使用 expo 在 xcode 模拟器上运行应用程序
我在我的 react native expo 应用程序中遇到了这个警告。我还附上了我的 package.json文件代码。请让我知道它的解决方案。谢谢 Accessing view manager c
我正在使用 this stackOverflow post 中的代码,这符合我的预期: Enumeration keys = UIManager.getDefaults().keys();
我收到以下警告“不再支持通过 UIManager['AIRMap'] 直接从 UIManager 访问 View 管理器配置。改用 UIManager.getViewManagerConfig('AI
我需要获取 TableHeader 和 Windows LookAndFeel 的默认背景颜色。我已经尝试过了: try { UIManager.setLookAndFeel(UIManage
我使用的是 Windows XP 外观。在包含按钮的面板上,按钮周围有一个矩形区域,看起来像经典按钮所占据的区域。该区域不符合我面板的颜色。例如,我将面板设置为蓝色,但按钮周围的区域仍然是白色的。那个
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Location of String keys in L&F 这是我的代码中的一行: UIManager.getSt
我正在试验 Java UIManager 和不同外观的使用。我很快发现,这不仅仅是在小程序开始时设置外观并奇迹般地看到 UI 产生的变化的问题。我发现的是,对于某些 LAF,我会发现奇怪的不可预测的行
我想使用 UIManager 更改我的组件样式。 例如: 我单击一个按钮,按钮前景从黑色变为绿色。 JCheckbox 也是如此...... 在我的示例中,更改仅适用于 Button.gradient
我见过人们使用 UIManager 来更改一些预先创建的 swing 组件(例如 JFileChooser)的字符串。 我在哪里可以找到某种引用,告诉我哪些字符串在哪些组件中是可变的,以及我如何访问它
我有一个 LoginScreen 和一个 MainWindow。当 DB 连接尝试成功时,出现 LoginScreen disposed 和 MainWindow。 我有一个按钮有 ActionLis
是否可以设置外观一次并将其“级联”到所有嵌套类? 在下面的示例中,我在类 Test 中设置了外观,但是我添加到 MainPanel 类中的 JFileChooser (嵌套在我的 Test 类中)不会
引用这个错误: 4848910 : UIManager only updates colors once 我的 JFrame 上有两个按钮。从第一个按钮开始,我将 LAF 颜色更改为 UIManage
我正在使用 UIManager 自定义一些 swing 组件,如下例所示, UIManager.put("TextField.background", COLOR_BG); UIManager.put
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我尝试使用UIManager.setLookAndFeel函数来更改我的java应用程序的外观,但它对我的JFrame/按钮的视觉外观没有影响。我使用 Netbeans 7.4,我的应用程序是 Jav
是否可以覆盖特定对象的 UIManager 属性? 例如,我的 UI 管理器有 [Label.background] => (ColorUIResource) [javax.swing.plaf.Co
虽然有相关文档,但它仅适用于MacOS。Https://github.com/react-native-community/react-native-linear-gradient.。我通过运行NPM
我是一名优秀的程序员,十分优秀!