我注意到同样的问题。这种颜色在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);
}};
}
}
但这个例子没有帮助。也许颜色是由超类设置为Frame的。
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
我的缺点是,由于Swing自己绘制,但使用本机窗口,那么是在调整大小之前绘制的本机背景,而Swing的背景是在调整大小之后绘制的。但对于本机应用程序,背景是在调整大小之前绘制的。
更新:我现在尝试使用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);
}};
}
}