При использовании JFrame и Canvas фон выглядит черным, а не голубым - PullRequest
0 голосов
/ 13 июля 2011

Здравствуйте, я делаю программу, которая создает мульти-мигающий блок на голубом фоне в 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);

1 Ответ

0 голосов
/ 14 июля 2011

Я не уверен, что полностью понимаю, что вы пытаетесь сделать. Если вы пытаетесь сделать JFrame голубой цвет с холстом, вот что я сделал:

import java.awt.Canvas;
import java.awt.Color;
import javax.swing.JFrame;

public class test {
    static JFrame frame;
    static Canvas canvas;

    public static void main(String[] args){
        frame  = new JFrame();
        canvas = new Canvas();

        canvas.setBackground(Color.cyan);
        frame.getContentPane().add(canvas);
        frame.setVisible(true);
    }
}

Я почти уверен, что на самом деле это не то, что вам нужно.

...