質問

私はJPanelの上の異なる図面を表示する必要があります。

...私は配列に図面ファイルを入れているが、私はボタンを使用して、それを変更したときに、JPanelのは最初の図面を表示し、次の描画に変更されません。

私は)(panel.revalidateと呼ばれているが、それは仕事をdoesntの。

これは私が使用されるが、動作していないコードのセグメントです。 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();
}
役に立ちましたか?

解決

あなたは<のhref = "http://java.sun.com/javase/6/docs/api/java/awt/Container.html#remove(java.awtあなたdrawingPanelへの参照を保持して呼び出してみてください.Component)」のrel = "nofollowをnoreferrerは">それを再度追加する前に、既存のdrawingPanelに()のを削除します。 のJPanel のJavaDocで、レイアウトによると、 FlowLayoutのには、デフォルトである - これはしませんあなたが意図しているように画像を交換するが、その代わりに前の1の右隣にdrawingPanelを配置します。 (ウィンドウのサイズを変更するとき何が起こる?)

ところで、どのようにあなたは、配列内の最後の画像を乗り越えるケースを扱うのですか?

他のヒント

あなたは、一度に1つの図面を表示していますか?もしそうなら、あなたはCardLayoutを使用しようとする場合がありますので、あなたは簡単に図面を切り替えることができます。 http://java.sun.com/docs/booksを参照してください。例えば/tutorial/uiswing/layout/card.html

私は同様の問題に動的にユーザーが選んだのJTabbedPaneのどのタブによって、私のUI上の別のボタンを表示しようとする他の日でした。 CardLayoutは、物事を容易にするだけのものだった。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top