java - 更改旋转窗口的底层背景颜色

标签 java windows swing jframe paint

讨论 here ,在 Vista(和我正在使用的 Windows 7)中调整 Swing 应用程序大小时,您会在右/下角看到黑色背景,而 Swing 的重绘会 catch 变化。

与其他应用程序(Windows Explorer( native )、Firefox(C++?)和 Eclipse(Java))一起玩,我注意到它们都有同样的问题——与上面链接中的人所说的相反——但它们最小化了通过使用灰色填充颜色来解决问题,与 Swing 中出现的黑色相比,这种颜色在视觉上远没有那么刺耳。

我想知道是否有某种方法可以改变这一点,使 Swing 的行为与这些其他应用程序一样?我尝试设置 JFrame 的背景颜色,但无济于事。

附加信息 Jonas 发现(请参阅下面的信息性回答)这是 JFrames 的问题,而不是 AWT 框架的问题 - 也许这会帮助某人解决这个问题。

最佳答案

我也注意到了同样的问题。这种颜色在 IE 中是灰色的,在 Opera 中是黑色的,在 Eclipse 中是灰色的。它接缝在 Swing 中更明显,因为它在重新绘制时接缝速度稍慢,颜色如您所说,黑色。如果您使用左上角调整大小,此问题会更加明显。

我编写了一个示例并试图了解这种黑色的定义位置。 JFrame has many layers , 所以我在每一层都设置了不同的背景。

import java.awt.Color;
import javax.swing.JFrame;

public class BFrame {

    public static void main(String[] args) {
        new JFrame() {{
            super.setBackground(Color.CYAN);
            this.getRootPane().setBackground(Color.BLUE);
            this.getLayeredPane().setBackground(Color.RED);
            this.getContentPane().setBackground(Color.YELLOW);
            this.setSize(400,340); 
            this.setVisible(true);
        }};
    }
}

但是这个例子没有帮助。也许颜色由父类(super class)设置为 Frame .

java.lang.Object
  java.awt.Component
      java.awt.Container
          java.awt.Window
              java.awt.Frame

我的理论是,由于 Swing 绘制自身,但使用 native Window,因此在调整大小之前绘制 native 背景,而在调整大小后绘制 Swing 的背景。但对于 native 应用程序,背景是在调整大小之前绘制的。

更新:我尝试使用 Frame现在,不再有同样的问题。调整大小前要绘制的背景接缝。

import java.awt.Color;
import java.awt.Frame;

public class B2Frame extends Frame {

    public static void main(String[] args) {
        new Frame() {{
            setBackground(Color.YELLOW);
            setSize(400,340);
            setVisible(true);
        }};
    }

}

关于java - 更改旋转窗口的底层背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779035/

相关文章:

java - 如何将 JFrame 放入 Java Swing 中现有的 JPanel 中?

java - 如何获取两点之间的距离并沿线移动一个点到达另一点

java - 需要更好的 Java 应用程序部署策略

windows - Qt Creator 在自定义流程步骤中将命令名称放在引号内

java - 使用 Eclipse 连接数据库 Oracle 11G () 的问题 :

java - 递归grep,效率高

java - Wicket - 生成动态表 - ChildId 警告

python - 从pdf文档中提取文本时是否可以获取行号?

python - nslookup 在 python 中使用服务器替代方案

windows - 在添加的行中搜索 TODO 并将其显示为 Windows 上 TortoiseGit 中的默认提交消息