java – 刷新JPanel

我需要在JPanel上显示不同的图纸.
我已将绘图文件放入数组中,但是当我使用按钮更改它时,JPanel仅显示第一个绘图并且不会更改为下一个绘图…

我调用了panel.revalidate(),但它不起作用.

这是我使用但不起作用的代码段.
JPanel显示是静态的.

    String[] a = {"image1.txt","image2.txt","image3.txt"};
    List<String> files = Arrays.asList(a);


    public void actionPerformed(ActionEvent e) {
    if (e.getSource() == answer1){
        fileNumber++;
        //call other class for painting (files=array files, fileNumber=index of the array)  
        draw = new drawingPanel(files,fileNumber);
        panel.add(draw);
    }
    panel.revalidate();
    panel.repaint();
}

解决方法:

您可以尝试保留对drawingPanel的引用,并在重新添加之前在现有drawingPanel上调用remove().根据JPanel JavaDoc,默认情况下布局是FlowLayout – 它不会像您想要的那样替换图像,而是将下一个drawingPanel放在前一个的右侧. (当你调整窗口大小时会发生什么?)

顺便说一句,你如何处理超过阵列中最后一个图像的情况?

上一篇:c# – 如何强制WPF ListView重新查询其ItemSource?


下一篇:python – 绑定到StringVar的Tkinter标签在更新时只需点击一下即可