Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击按钮时更改照片_Java_Swing_Icons_Imageicon - Fatal编程技术网

Java 单击按钮时更改照片

Java 单击按钮时更改照片,java,swing,icons,imageicon,Java,Swing,Icons,Imageicon,我删除了不必要的代码。 如何在每次单击按钮时更改照片? 当我点击按钮时,iter变量递增。 但这不会改变照片。它只显示a1.jpg 我希望发生的是,每次单击按钮,它都会显示下一张照片(a2.jpg、a3.jpg、a4.jpg…您永远不会调用ActionListener中JLabel上的pic.setIcon(…))。在Stage1构造函数中只调用一次,因此JLabel的图标永远不会改变。解决方案是在侦听器中调用此方法 您的问题是一种“神奇的思维”,认为如果您更改变量所引用的对象,那么对该对象的所

我删除了不必要的代码。 如何在每次单击按钮时更改照片? 当我点击按钮时,iter变量递增。 但这不会改变照片。它只显示a1.jpg
我希望发生的是,每次单击按钮,它都会显示下一张照片(a2.jpg、a3.jpg、a4.jpg…

您永远不会调用ActionListener中JLabel上的
pic.setIcon(…)
)。在Stage1构造函数中只调用一次,因此JLabel的图标永远不会改变。解决方案是在侦听器中调用此方法


您的问题是一种“神奇的思维”,认为如果您更改变量所引用的对象,那么对该对象的所有其他引用也将更改,但Java不是这样工作的。当您更改ic所指的图标时,这对JLabel中显示的当前对象没有影响。您必须自己编写代码来更改它。

您永远不会在ActionListener中的JLabel上调用
pic.setIcon(…)
。在Stage1构造函数中只调用一次,因此JLabel的图标永远不会改变。解决方案是在侦听器中调用此方法


您的问题是一种“神奇的思维”,认为如果您更改变量所引用的对象,那么对该对象的所有其他引用也将更改,但Java不是这样工作的。当您更改ic所指的图标时,这对JLabel中显示的当前对象没有影响。你必须自己编写代码来更改它。

pic.setIcon
…?哈哈,我真傻。谢谢你
pic.setIcon
…?哈哈,我真傻。非常感谢。
import javax.swing.Icon;
import javax.swing.ImageIcon;


public class Stage1 extends javax.swing.JFrame {


    int score = 0;
    int iter = 1;


    public Stage1() {
        initComponents();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setTitle("Stage 1");
        Icon ic = new ImageIcon("a"+ iter + ".jpg");
        pic.setIcon(ic);


    }


    private void submitActionPerformed(java.awt.event.ActionEvent evt) {                                       

        if(answer.getText().equals("input"))
        {
            score++;
            iter++;
            answer.setText("");
            String sc = Integer.toString(score);
            jLabel1.setText(sc);
            jLabel2.setText(Integer.toString(iter));
        }
        else
        {
            iter++;
            Icon ic = new ImageIcon("a"+ iter +".jpg");
            answer.setText("");
            jLabel2.setText(Integer.toString(iter));
        }


    }                                      


    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Stage1().setVisible(true);
            }
        });
    }


    private javax.swing.JTextField answer;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel pic;
    private javax.swing.JButton submit;

}