Ä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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
javax.swing.Timer
wenn Sie wollen, animieren mit Schwung. Sehen How to use Swing TimersSiehe weitere Beispiele hier und hier und hier und hier.
Diese eine Prüfung aus. Es ändert den hintergrund von nur ein panel, anstatt zu versuchen, mehrere solche, wie Sie versuchen zu tun.