我注意到同样的问题.这种颜色在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);
}};
}
}

但这个例子没有帮助.也许颜色由超类设置为Frame.

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

我的看法是,由于Swing自己绘制,而是使用一个本机Window,那么是在调整大小之前绘制的本机背景,并且在调整大小后绘制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);
}};
}
}