4

我需要在 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();
}
4

2 回答 2

2

您一次只显示一张图纸吗?如果是这样,您可能想尝试使用 CardLayout,这样您就可以轻松地在图纸之间切换。有关示例,请参见http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html 。

前几天我遇到了类似的问题,试图根据用户选择的 JTabbedPane 的哪个选项卡在我的 UI 上动态显示不同的按钮。CardLayout 只是让事情变得简单的东西。

于 2009-03-22T00:48:48.673 回答
2

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

顺便说一句,您如何处理超出数组中最后一个图像的情况?

于 2009-03-22T01:53:20.173 回答