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

一度に 1 つの図面しか表示していませんか? その場合は、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です。これは、意図したように画像を置き換えるのではなく、次の drawingPanel を前のものの右側に配置します。(ウィンドウのサイズを変更するとどうなりますか?)

ところで、配列の最後の画像を通過した場合、どのように処理しますか?

于 2009-03-22T01:53:20.173 に答える