Я заметил ту же проблему. Этот цвет серый в IE, в Opera - черный, а в Eclipse - серый. Он кажется более заметным в Swing, потому что он выглядит немного медленнее при перекрашивании, а цвет, как вы сказали, черный . Эта проблема более заметна, если вы используете верхний левый угол для изменения размера.
Я закодировал пример и попытался понять, где определяется этот черный цвет. A 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);
}};
}
}