增强的for循环不会循环! java的

时间:2018-03-28 20:02:12

标签: java loops for-loop

尝试创建一个简单的java程序,该程序使用java GUI库简单地显示一个正方形,一个按钮和一个在点击时改变颜色的圆圈。一切都编译并运行,除非我无法通过(actionListener)按钮在每次点击时更改其文本!!

我尝试了一个常规的for循环和一个增强的for循环,但是我的按钮只会显示其原始文本,并且在cicking时只会显示ArrayList中的最后一个文本...

package chapter12;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
public class SimpleGui3C implements ActionListener {
  JFrame frame;
  JButton button;
  public static void main(String [] args ) {
    SimpleGui3C run = new SimpleGui3C();

    run.go();
  }

  public void go() {
    frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    button = new JButton("FUCKING GENIUS!");
    button.addActionListener(this);

    MyDrawPanel panel = new MyDrawPanel();
    Gradient_Random gradient = new Gradient_Random();

    frame.getContentPane().add(BorderLayout.CENTER, gradient);
    frame.getContentPane().add(BorderLayout.SOUTH, button);

    frame.setSize(300, 300);
    frame.setVisible(true);
  }

   public void actionPerformed(ActionEvent event) {
    ArrayList<String> txtList = new ArrayList<String>();
    txtList.add("bOOm!");
    txtList.add("SpLaT!");
    txtList.add("FUCKING GENIUS!");
    txtList.add("whoOSH!");
    txtList.add("PoW!");



    for (String txt : txtList) {
    frame.repaint();
    button.setText(txt);


   }

   }    

2 个答案:

答案 0 :(得分:0)

我最终只是没有使用loop.DUH! (对吗?)每次调用该方法时,整个for循环将一直迭代。我真的很高兴没有人给我一个直接的回答,我收到的小推动足以让我朝着正确的方向前进。毕竟,在编程I PROMISE中,如果您通过尽力解决自己的问题找到解决方案,您将会学到更好的知识。这个网站很棒!

无论如何,我删除了整个for循环,只添加了2行

static int X;

并在actionPerformed()方法内添加了

button.setText(txtList.get(X);

答案 1 :(得分:0)

最后一个补充...... 在上一个答案中,按钮在四次单击后会抛出几个运行时异常。 (因为代码递增x,但数组的长度仅等于4)。我添加了这段代码来阻止它爆炸。您也可以使用Math.random * txtList.length并将结果转换回int变量...

Model.save()