0

基本的に例外がスローされており、理由がわかりません。コンソールに表示されるのは次のとおりです。

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
    at org.apache.batik.gvt.renderer.StrokingTextPainter.computeTextRuns(Unknown Source)
    at org.apache.batik.gvt.renderer.StrokingTextPainter.getTextRuns(Unknown Source)
    at org.apache.batik.gvt.renderer.StrokingTextPainter.getOutline(Unknown Source)
    at org.apache.batik.gvt.renderer.BasicTextPainter.getGeometryBounds(Unknown Source)
    at org.apache.batik.gvt.TextNode.getGeometryBounds(Unknown Source)
    at org.apache.batik.gvt.TextNode.getSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.AbstractGraphicsNode.getTransformedSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.CompositeGraphicsNode.getTransformedSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.CompositeGraphicsNode.getTransformedSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.CompositeGraphicsNode.getTransformedSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.CompositeGraphicsNode.getSensitiveBounds(Unknown Source)
    at org.apache.batik.gvt.CompositeGraphicsNode.nodeHitAt(Unknown Source)
    at org.apache.batik.gvt.event.AbstractAWTEventDispatcher.dispatchMouseEvent(Unknown Source)
    at org.apache.batik.gvt.event.AbstractAWTEventDispatcher.dispatchEvent(Unknown Source)
    at org.apache.batik.gvt.event.AWTEventDispatcher.dispatchEvent(Unknown Source)
    at org.apache.batik.gvt.event.AbstractAWTEventDispatcher.mouseEntered(Unknown Source)
    at org.apache.batik.swing.gvt.AbstractJGVTComponent$Listener.dispatchMouseEntered(Unknown Source)
    at org.apache.batik.swing.svg.AbstractJSVGComponent$SVGListener.dispatchMouseEntered(Unknown Source)
    at org.apache.batik.swing.gvt.AbstractJGVTComponent$Listener.mouseEntered(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseEntered(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseEntered(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.trackMouseEnterExit(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$400(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.awt.EventQueue$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

SVG ファイルの描画に使用するのは明らかにバティック ライブラリからのものですが、ドキュメントが読み込まれ、準備が整い、画面に表示されるまで、何も描画されないようにしました。投げると何も描かれません。

もう一つ興味深いのは、投げるタイミングです。クラスを開始するとすぐにスローされることもあれば、5分以上かかることもあるため、論理パターンを見つけることができません。これに加えて、私がテストした限り、それをトリガーする repaint() を呼び出す単一のアクションはありません。

私はJavaが初めてで、他のすべての例外には、スローされた場所のクラスと行番号があったため、ここで何をすべきかわかりません。

どんな提案でも大歓迎です。

コードが膨大なので、paint メソッドだけ載せます。何か追加が必要な場合は、そう言ってください。

@Override
    public void paint(Graphics g) {
        if(documentLoaded && showingOnScreen){
            try{
                rad = (int)(radInit+zoom*faktorRad); //max rad = 20
                super.paint(g);


                Graphics2D g2d = (Graphics2D) g;
                paintElements(g2d);

            }
            catch(NullPointerException nulle){

            }
        }
    } 

編集:私のクラスには配列がないため、インデックスを確認できません。この例外は私が使用しているライブラリからスローされたと思いますが、それは .jar ファイルであり、開く方法がわかりません。

4

2 に答える 2

0

ライブラリがジオメトリについて何かを計算しようとしているときに、「マウス入力」イベントの後に例外がスローされたようです。スタック トレース内のどのクラスも、定義したリスナーではないようです。私はこのライブラリについて何も知りませんが、正しくないもの、または削除して問題を再現できるものについて定義した UI を確認することをお勧めします。レンダリングされたジオメトリに何か問題があるか、想定される前にリスナーが呼び出されており、まだ行われていないレンダリングに依存しているようです。

于 2012-10-25T11:41:18.940 に答える
0
java.lang.ArrayIndexOutOfBoundsException 

この例外は、配列が不正なインデックスでアクセスされた場合にのみスローされます。インデックスが負であるか、配列のサイズ以上です。ArrayIndexOutOfBoundsException
つまり、プログラムで配列を間違った方法で使用していることを意味します。

于 2012-10-25T10:41:09.673 に答える