该代码用于创建一个显示图片的应用程序,如果您的答案正确,则应该看到下一张图片,但是pictureCount不会增加。所有变量都在主类之后声明,我创建了一个Actionlistener来检查遮篷是否正确。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Main {
public static void main(String[] args) {new Main().test();}
public int pictureCount = 1;
JFrame frame = new JFrame();
JButton button1 = new JButton("Submit");
JTextField text = new JTextField();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JLabel label = new JLabel(new ImageIcon("C:\\Users\\Admin\\Desktop\\practicum 3\\" + pictureCount + ".jpg"));
void test(){
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
if(text.getText().equals("5")){
pictureCount++;
new Main().test();
}
}
});
panel1.add(button1);
panel2.add(text);
panel3.add(label);
text.setPreferredSize(new Dimension(100,50));
panel1.setPreferredSize(new Dimension(1000, 200));
panel2.setPreferredSize(new Dimension(1000, 100));
panel3.setPreferredSize(new Dimension(1000, 450));
frame.getContentPane().add(BorderLayout.SOUTH, panel1);
frame.getContentPane().add(BorderLayout.CENTER, panel2);
frame.getContentPane().add(BorderLayout.NORTH, panel3);
frame.setSize(1000,750);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Operation Screen");
frame.setLocationRelativeTo(null);
}
}
最佳答案
您需要将所有图片作为ImageIcons读入称为imageIconArray
的数组或ArrayList中,然后在启动时在JLabel中显示imageIconArray [0]。
当按下按钮时,增加pictureCount,然后通过其setIcon(...)
方法重置JLabel的图标:
// in the ActionListener code:
pictureCount++;
label.setIcon(imageIconArray[pictureCount];
无论您做什么,都不要创建新的Main对象,尽管其他人可能会说。当您需要交换显示的图像时,为什么还要创建新的GUI?
关于java - PictureCount不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29808054/