如何使用resetButton重置参数

时间:2014-04-02 21:27:10

标签: java swing

我正在编写一个程序来处理创建房屋和重新安排邻居(类似于生活游戏)

它是用Java编写的,它是一个重置按钮,用当前参数重新启动。

问题是当我点击resetButton时整个窗口关闭。

您可以在问题和问题中找到代码。

这些是其他涉及的字段,因此您可以更好地理解代码:

  • TextField设置城市的大小(边缘上的方格数)。

  • TextFild设置邻居的最大百分比,而不是像家人在移动前所能容忍的那样。即,如果数字设置为70,则有6个蓝色邻居的红房子会移动;据此,一个有5个蓝色邻居的红色家庭可以。

  • TextField设置一个最小百分比的邻居,而不是像家人在搬家前所能容忍的那样。对于喜欢多样化TextField以设置红色家庭百分比的人来说,大于0。注意:您可以通过概率执行此操作。您不需要具有此确切百分比的红色家庭。

  • TextField设置蓝色家庭的百分比。白色将是剩下的东西。单步按钮为每个家庭提供一次移动的机会。你不需要小心这个事实,当你在城市中前进时,一个人在移动的机会可能会移动到一个后来有机会的地方(即一些家庭真的得到两个或更多的转弯)。

  • 转到按钮,启动和停止程序自行执行步骤。

所以我的问题是我如何让这些字段和按钮重新启动当前参数(在播放几次之后重新启动它)

正如你所看到的,我添加了resetButton来完成它的工作但不知道它不是。

好吧,就像我运行程序一样,我有一组红色和蓝色的数字,你可以在我看到,然后当我运行它时,它从这些数字开始。所以我继续改变,因为我玩,然后有一个重置按钮,让我重置我做的,并应该带回原来开始:

public final static int size = 5 and so on

这是我的主要计划

public class Ghetto extends JFrame implements ActionListener,  MouseListener,MouseMotionListener 
   {

protected Grids theGrid;
JButton resetButton;
javax.swing.Timer timer; // generates ticks that drive the animation

public final static int SIZE = 5;
public final static int BLUE = 10;
public final static int RED = 8;
public final static int DIVERSITY_PERCENTAGE = 70;

public static void main(String[] args) 
{
    new Ghetto();

}

public Ghetto() {
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    addMouseListener(this);
    addMouseMotionListener(this);
    setLayout(new FlowLayout());

    theGrid = new Grids(SIZE, BLUE, RED, DIVERSITY_PERCENTAGE);
    add(theGrid);

    resetButton = new JButton("Reset");
    add(resetButton);
    resetButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            resetWithCurrent();
        }
    });


    setSize(new Dimension(550, 600));
    setVisible(true);
}



public void resetWithCurrent()
{
    //this.dispose();
}

@Override
public void actionPerformed(ActionEvent e) 
{
    timer.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent e) 
        {
            performStep();

                            //if (e.getSource() == resetButton )
                            //{
            //resetWithCurrent();
                            //}
        }
    });

}
}

我也添加了这部分

    public class Observable{

    int state = 0;
    int additionalState = 0;
    public final void updateState(int increment)
    {
        doUpdateState(increment);
        notifyObservers();
    }
    private void notifyObservers() {
        // TODO Auto-generated method stub

    }
    public void doUpdateState(int increment)
    {
        state = state + increment;      
    }

}
public class ConcreteObservable extends Observable{

public void doUpdateState(int increment){
        super.doUpdateState(increment); // the observers are notified
        additionalState = additionalState + increment; // the state is     changed after the notifiers are updated
    }

}

但它没有任何区别。

0 个答案:

没有答案