Generalnie zarys programu wygląda tak, że do pewnego zbioru danych dostarczam dane co jakiś czas (czytam temperaturę z RS-a). Klasa przechowująca dane za każdym razem gdy dane się zmieniają powiadamia o tym swoich zarejestrowanych słuchaczy. U mnie słuchaczem jest klasa rozszerzająca JPanel. Po zmianie danych procedura obsługi zdarzenia wywołuje metodę repaint(). Metoda paintComponent panelu wywoływana jest tylko raz: zaraz po starcie programu. Wywoływanie repaint() nie powoduje wywołania metody paintComponent...
Przedstawiam fragmenty kodu:
Procedura obsługi zdarzenia w klasie JPanel:

 public void chartDataChanged(ChartDataModelEvent event) {
		// TODO Auto-generated method stub
		System.out.println("Dostałem dane!");
		coordSys = new CoordinateSystem(chart.getDataModel(), chartMargins, dimension);
		chart.setCoordSystem(coordSys);
		
		//chart = new DefaultChart(chartData, chartMargins, "Tytul", dimension);
		chart.addChartRenderer(new PointCharRenderer(chart.getDataModel(), coordSys, chartMargins, dimension));
		repaint();
		
		System.out.println("Ostatnie wsp: "+chart.getChartRenderer().getDataModel().getXvalueAt(
				chart.getChartRenderer().getDataModel().getDataLength()-1)+" "+
		chart.getDataModel().getYvalueAt(chart.getDataModel().getDataLength()-1));
		System.out.println("Wielkosc: "+chart.getDataModel().getDataLength());
	}

Ramka z panelem

import javax.swing.JFrame;
import java.awt.event.*;
import java.awt.*;
import java.awt.geom.*;

import pwr.wykres.event.*;


public class TestFrame1 {
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
		{
			public void run()
			{
				fr = new TestFrame();
				JFrame frame = new TestFrame();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setResizable(false);
				frame.setVisible(true);
			}
		});
	}
	
	public static TestFrame fr;
}

class TestFrame extends JFrame
{
	public TestFrame()
	{
		rs = new RS(this);
		rs.searchForPorts();
		rs.connect();
        if (rs.getConnected() == true)
        {
        	System.out.println("Udalo sie otwirzyc");
            if (rs.initIOStream() == true)
            {
                rs.initListener();
            }
        }
		
		setTitle("Test");
		setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
		
		getContentPane().setLayout(null);
		
		
		wykrPanel = new WykresPanel1();
		//component.setOpaque(false);
		wykrPanel.setBackground(Color.WHITE);
		//add(new AlphaContainer(wykrPanel));
		add(wykrPanel);
	}
	
	public WykresPanel1 getWykrPanel(){
		return wykrPanel;
	}
	
	public RS getRS(){
		return rs;
	}
	
	WykresPanel1 wykrPanel;
	RS rs;
	
	private static final int DEFAULT_WIDTH = 600;
	private static final int DEFAULT_HEIGHT = 400;
} 

Dodam, że po dodaniu danych zdarzenia są przesyłane. Słuchacz je odbiera i przetwarza. Jedyne co nie działa to metoda repaint()... W przypadku stałych danych punkty na wykresie są rysowane poprawnie, więc ten element działa.

Kod jest wynikiem dużej liczby zmian koncepcji więc z pewnością jest kiepskiej jakości.
Z góry dziękuję za pomoc