java - 如何使用 Nimbus Laf 更改内部框架的 "minimize, maximize and close"图标?

标签 java swing jinternalframe nimbus uimanager

我正在使用 Nimbus 外观和感觉, 我知道如何使用以下代码更改工具提示颜色:

UIManager.put("info", Color.white);

但是如何将图标(最小化、最大化和关闭)更改为另一个图标/png 文件?

这里是关闭按钮的关键:InternalFrame:InternalFrameTitlePane:"InternalFrameTitlePane.closeButton"[Enabled].backgroundPainter 与后面的 info 相同。

这是包含所有 key 的站点:http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/_nimbusDefaults.html#primary

最佳答案

看起来像一个丑陋的 Hack,但对我有用。

    JComponent     title = ((BasicInternalFrameUI)myInternalFrame.getUI()).getNorthPane();
    for (int i = 0; i < title.getComponentCount(); i++) {
        JComponent component = (JComponent)title.getComponent(i);
        if(component instanceof JButton) {
            JButton button = ((JButton)component);
            if(button.getName() == null) continue;
            if(button.getName().endsWith("closeButton")) {
                button.setIcon(myIcon);
                button.setSelectedIcon(myIcon);
                button.setPressedIcon(myIcon);
            }
            if(button.getName().endsWith("maximizeButton")) {
                ...
            }
            if(button.getName().endsWith("iconifyButton")) {
                ...
            }
        }
    }

关于java - 如何使用 Nimbus Laf 更改内部框架的 "minimize, maximize and close"图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13506796/

相关文章:

JavaFX Glitches 动画非标准小部件

java - Spring , thymeleaf : redirecting to <select> value

java - 调用 JScrollPane 时未调用 PaintComponent

java - 强制检查 JInternalFrame 的大小

java - Spring boot 的 ThymeLeaf 时间问题

java - 在java中选择随机数

java - BufferedImage 未在 JPanel 内呈现

java - 如何正确设置 jpanels 的大小?

java - 内部 JFrame 属性

java - 最大化 JInternalFrame Windows 外观和感觉最大化所有 JInternalFrame