dim*_*414 13 java windows swing paint jframe
正如这里所讨论的,当在Vista中调整Swing应用程序的大小(和Windows 7,这就是我正在使用的)时,右下角会出现黑色背景,而Swing的重绘会赶上更改.
使用其他应用程序(Windows资源管理器(本机),Firefox(C++?)和Eclipse(Java))我注意到它们都有同样的问题 - 与上面链接中的人说的相反 - 但它们通过以下方式将问题最小化具有灰色填充颜色,与Swing中出现的黑色相比,其视觉震撼性要小得多.
我想知道是否有一些方法可以改变这一点,以便Swing的行为与其他应用程序一样?我尝试设置JFrame的背景颜色,但无济于事.
其他信息 乔纳斯发现(见下面的信息性答案)这是JFrames的一个问题,但不是AWT框架 - 也许这会帮助有人解决这个问题.
我注意到同样的问题。该颜色在 IE 中为灰色,在 Opera 中为黑色,在 Eclipse 中为灰色。它在 Swing 中似乎更明显,因为它在重新绘制时速度稍慢,并且颜色如您所说,黑色。如果使用左上角调整大小,此问题会更加明显。
我编写了一个示例并试图理解这种黑色是在哪里定义的。JFrame有很多层,所以我在每一层上设置不同的背景。
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);
}};
}
}
Run Code Online (Sandbox Code Playgroud)
但这个例子没有帮助。也许颜色由超类设置为Frame。
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
Run Code Online (Sandbox Code Playgroud)
我的理论是,由于 Swing 会自行绘制,但使用本机窗口,因此在调整大小之前绘制本机背景,而在调整大小之后绘制 Swing 的背景。但对于本机应用程序,背景是在调整大小之前绘制的。
更新:我现在尝试使用框架,并且没有遇到同样的问题。调整大小之前要绘制的背景接缝。
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);
}};
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13291 次 |
| 最近记录: |