import java.awt.*;
import javax.swing.*;
import java.util.Timer;
public class GUI extends JPanel
{
private static final long serialVersionUID = 1L;
private static final int ROWS = 50;
private static final int COLS = 30;
public JButton[][] buttons = new JButton[ROWS][COLS];
public GUI()
{
setLayout(new GridLayout(ROWS, COLS, 1,1));
for (int row = 0; row < buttons.length; row++) {
for (int col = 0; col < buttons[row].length; col++) {
JButton button = new JButton("");
add(button);
buttons[row][col] = button;
}
}
buttons[0][0].setBackground(Color.BLACK);
}
public void start()
{
GUI gui = new GUI();
JFrame frame = new JFrame("The Game Of Life");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(gui);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public void run()
{
this.start();
this.setColor('g', 0, 0);
}
public void setColor(char c, int i, int j)
{
setLayout(new GridLayout(ROWS, COLS, 1,1));
for (int row = 0; row < buttons.length; row++) {
for (int col = 0; col < buttons[row].length; col++) {
JButton button = new JButton("");
add(button);
buttons[row][col] = button;
switch(c){
case 'g':
buttons[i][j].setBackground(Color.GREEN);
case 'r':
buttons[i][j].setBackground(Color.RED);
case 'b':
buttons[i][j].setBackground(Color.BLACK);
}
}
}
}
}
我可以通过“按钮[0] [0]”来改变颜色,但其他任何地方似乎都没有用(按钮[0] [0]就是一个例子,它是唯一可以改变颜色的地方按钮颜色)类GUI是一个系统的一部分,应该创建生物学“生命游戏”这是Gui界面的代码我需要代码来创建一个50x30按钮的网格,我将最终制作每个按钮根据周围其他按钮的属性更改颜色。此时最大的问题是除非在GUI构造函数中完成,否则我无法使用按钮来更改颜色。如果有人可以帮助我,我将非常感谢这是CS项目的一部分。如果您认为您需要更多信息,我很乐意发布任何需要的信息。 附:我意识到代码可能有点乱,我一直在弄它,所以我道歉。
import java.awt.*;
import javax.swing.*;
public class View extends JPanel
{
private static final long serialVersionUID = 1L;
private static final int ROWS = 50;
private static final int COLS = 30;
GUI gui = new GUI();
JFrame frame;
public View()
{
}
public void run()
{
//timer.start();
gui.run();
}
public void setButtons(Cell[][] colorset)
{
for(int i = 0; i<ROWS; i++)
{
for(int j = 0; j<COLS; j++)
{
switch(colorset[i][j].getCurrent())
{
case 0:
gui.setColor('g', i, j);
case 1:
gui.setColor('r', i, j);
case 2:
gui.setColor('b', i, j);
default:
}
}
}
//this.run();
}
}“
答案 0 :(得分:2)
您的问题是您希望在程序运行时调用setColor(...)
。解决方案是在某些事件代码中调用它,并且代码将取决于您想要触发其调用的事件。如果是JButton按下,则将其放在JButton的ActionListener中。如果你想要每个xxx mSec调用它,那么将它放在Swing Timer的ActionListener中。如果您希望它响应按键,则将其置于Key Bindings Action中。