Rumah >Java >javaTutorial >Mengapakah Mengemas kini Siri JFreeChart Secara Dinamik Menyebabkan Pengecualian 'Indeks Di Luar Had'?

Mengapakah Mengemas kini Siri JFreeChart Secara Dinamik Menyebabkan Pengecualian 'Indeks Di Luar Had'?

Susan Sarandon
Susan Sarandonasal
2024-12-21 19:43:12964semak imbas

Why Does Updating a JFreeChart Series Dynamically Cause

Ralat rawak semasa menukar siri menggunakan JFreeChart

Pengenalan

Soalan ini meneroka masalah yang dihadapi semasa cuba mengemas kini siri secara dinamik dalam graf JFreeChart. Pelaksanaan asal menghasilkan pengecualian dan paparan data yang salah.

Masalah

Kod yang disediakan bertujuan untuk mengubah suai siri data dalam urutan, tetapi ia menemui "Siri indeks keluar pengecualian" dan "indeks di luar sempadan". Paparan graf juga tidak berfungsi. Sebab ralat ini adalah penyegerakan yang tidak betul dan penggunaan DateAxis yang tidak sesuai.

Penyelesaian

Pendekatan yang betul adalah untuk mengemas kini set data daripada kaedah proses() bagi seorang SwingWorker. Selain itu, NumberAxis harus digunakan untuk domain dan bukannya DateAxis. Berikut ialah coretan kod yang disemak yang menunjukkan penyelesaian ini:

private XYSeries series = new XYSeries("Result");
...
@Override
protected void process(List<Double> chunks) {
    for (double d : chunks) {
        label.setText(df.format(d));
        series.add(++n, d);
    }
}

Perbincangan

Menggunakan SwingWorker memastikan penyegerakan yang betul dan membolehkan set data dikemas kini dengan selamat dari dalam pekerja benang. NumberAxis sesuai untuk domain kerana paksi X mewakili bilangan lelaran, bukan tempoh masa.

Pendekatan Alternatif

Pendekatan alternatif ialah menggunakan DynamicTimeSeriesCollection . Walau bagaimanapun, kaedah ini tidak sesuai apabila domain paksi-X berdasarkan lelaran, bukan tempoh masa dan memerlukan kemas kini apabila pengiraan selesai, bukan pada selang masa yang tetap.

Nota Tambahan

Coretan kod yang disediakan mencipta carta garisan yang memplot kemajuan pengiraan pada paksi Y. Paksi-X mewakili nombor lelaran. Carta dikemas kini secara dinamik semasa pengiraan berlangsung.

Atas ialah kandungan terperinci Mengapakah Mengemas kini Siri JFreeChart Secara Dinamik Menyebabkan Pengecualian 'Indeks Di Luar Had'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn