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;
}
我删除了不必要的代码。 每次单击按钮时如何更改照片? 当我单击按钮时,iter变量递增。 但它并没有改变照片。它只显示a1.jpg 我想要发生的是,每次点击按钮,它都会显示下一张照片(a2.jpg,a3.jpg,a4.jpg ......)
答案 0 :(得分:2)
您永远不会在ActionListener中的JLabel上调用pic.setIcon(...)
。您只能在Stage1构造函数中调用一次,因此JLabel的Icon将永远不会更改。解决方案是在侦听器中调用此方法。
你的问题是一个“神奇的思考”,认为如果你改变一个变量引用的对象,对该对象的所有其他引用也会改变,但这不是Java的工作方式。当您更改ic引用的Icon时,这对JLabel中显示的当前对象没有影响。你必须编写代码来自行更改。