Ändern JPanel Hintergrund Farbe in JFrame

Ich versuche, ändern Sie den hintergrund ein JPanel innerhalb eines JFrame. JFrame aus JPanels viel wie ein raster. I"m zu ändern versuchen, eine zufällige JPanel innerhalb des JFrame und sehen Sie die Farbe ändern bei jedem Durchlauf durch die Schleife. Hier ist, was ich habe, so weit.

private static JPanel panel;
private static int index;

public static void main(String[] args)
{
    JFrame window = new JFrame();
    window. setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
    window.setSize(600, 600);
    GridLayout layout = new GridLayout(50, 50, 3, 3);
    panel = new JPanel(layout);
    panel.setSize(600, 600);

    //Initialize the JFrame with JPanels that
    //are all white.
    InitializeGrid(panel);

    window.add(panel);
    window.validate();
    window.setVisible(true);


    MainLoop();
}

private static void MainLoop()
{

      Component[] componentArrayTwo = panel.getComponents();

      int index = 0;

      while(true)
      {
        JPanel currentPanel = (JPanel) componentArrayTwo[index];
            currentPanel.setBackground(Color.GREEN);
            index++;

          if(index == 1600)
          {
              //Restart again
              index = 0;
          }

          //Colors everything back to white.
          Reset();
      }    
}

private static void InitializeGrid(JPanel panel)
{
      //40 x 40 = 1600
    for(int i = 0; i < 1600; i++)
    {
        JPanel cellPanel = new JPanel();

        cellPanel.setMinimumSize(new Dimension(3, 3));
        cellPanel.setMaximumSize(new Dimension(3, 3));
        cellPanel.setPreferredSize(new Dimension(3, 3));
        cellPanel.setBackground(Color.WHITE);

        panel.add(cellPanel);
    }
}

/*************************************************************************/
//NAME: Reset
//DESCRIPTION: Resets all the cells back to white which is executed on
//each iteration through the loop.
/*************************************************************************/
private static void Reset()
{
    Component[] componentArrayTwo = panel.getComponents();

    for(Component individualComponent : componentArrayTwo ) 
    {
        JPanel panelToColor = (JPanel) individualComponent;


        panelToColor.setBackground(Color.WHITE);

    }
}

Wenn ich die Auskommentierung Zeile der Tafel.add(individualPanel) dies wird zeigen, die Farbe zu ändern, aber es hält auch das hinzufügen von mehr und mehr JPanels auf das JFrame. Jedoch, kommentieren Sie diese Zeile lässt mich die Farbe ändern aber nicht zeigen änderungen in den JFrame. Ich habe versucht, verschiedene Stücke in diesem code, aber bisher hab ich erfolglos gewesen. Was passieren sollte ist, dass bei jedem Durchlauf durch die Schleife, ich sollte sehen, eine Grüne JPanel zeigen, bis in zufälligen stellen in das JFrame. Wenn jemand helfen könnte ich würde schätzen es.

  • Schauen Sie in einem javax.swing.Timer wenn Sie für die animation. Sehen Sie unten die Antwort für einige Beispiele.
InformationsquelleAutor zic10 | 2014-02-27
Schreibe einen Kommentar