-1

このコードを修正するにはどうすればよいですか? このエラーが何を意味するのかわかりません... for eachループ中にリストの要素が削除されたことが原因だと聞きましたが、削除しているものは何も表示されません...

    public void paintComponent(Graphics g)
    {
        Graphics2D g2 = (Graphics2D) g;
        for(Layer e : layerList)
            e.drawLayer(g2);
    }

jcomponent には、Graphics を渡すレイヤーと呼ばれるオブジェクトのリストがあり、レイヤーがそれ自体をペイントできるようになっています。レイヤーなどを削除することは決してないので、迷子になります。ヘルプ?

4

1 に答える 1

1

レイヤーリストを操作できるスレッドが複数ある場合は、以下の例のように同期ブロックの使用を検討する必要があります。これは、この問題を防ぐのに役立ちます。または、layerList を同期させることを検討することもできますが、プログラムとスレッド構造の詳細情報がなければ、何が最適かを判断するのは困難です。同期ブロックの代わりに、この同期リストをオプションとしてチェックしてください。

 synchronized( layerList ) 
 {
    for(Layer e : layerList)
        e.drawLayer(g2);
 }
于 2010-02-19T05:45:29.010 に答える