Здравствуйте, я делаю программу, которая создает мульти-мигающий блок на голубом фоне в Java. Я использую JFrames и Canvas, но по какой-то причине, даже если я укажу голубой цвет, мой фон станет черным. Однако список ключей, если блоки заполняют пространство голубым, если вы перемещаете поле. Ниже приведен код, который, я думаю, имеет отношение к проблеме. Буду очень признателен за любую помощь, и спасибо за то, что прочитали это (обратите внимание, что это, вероятно, плохой синтаксис и кодирование, но моя теория заключается в том, чтобы заставить код работать до того, как он будет хорош).
GraphicsEnvironment ge =
GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = gd.getDefaultConfiguration();
// Create off-screen drawing surface
BufferedImage bi = gc.createCompatibleImage( 640, 480 );
// Objects needed for rendering...
Graphics graphics = null;
Graphics2D g2d = null;
//Why isn't the background color cyan? (It's black)
Color background = Color.CYAN;
Random rand = new Random();
//The x and y positions are randomly generated as are the length and width
int x = rand.nextInt(640 / 2), y = rand.nextInt(640 / 2);
int w = rand.nextInt( 640/2 );
int h = rand.nextInt( 480/2 );
//To Do: Infinite loops suck, make a death variable
while( true ) {
try {
// clear back buffer...
g2d = bi.createGraphics();
g2d.setColor(Color.CYAN);
g2d.fillRect( -1000, 1000, 1000, 1000 );
// draw the rectangle...
int r = rand.nextInt(256);
int g = rand.nextInt(256);
int b = rand.nextInt(256);
g2d.setColor(new Color(r, g, b));
g2d.fillRect( x, y, w, h );
//Get the newly drawn rectangles and flip
graphics = buffer.getDrawGraphics();
graphics.drawImage(bi, x, y, canvas);