该代码用于创建一个显示图片的应用程序,如果您的答案正确,则应该看到下一张图片,但是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/

10-09 19:37