Dúvida com a importação de uma classe para o public static void main

Boa tarde pessoal, tenho um código que segue abaixo e estou com uma dúvida(problema):

[code]
package xyseries;

/*
*

  • @author eduardoesn
    */
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.data.xy.XYSeries;
    import org.jfree.data.xy.XYSeriesCollection;
    import org.jfree.ui.ApplicationFrame;
    import org.jfree.ui.RefineryUtilities;
    import lertxt.LerTxt;

public class XYSeriesDemo extends ApplicationFrame {

private Object br;
static XYSeries series;

public void LerTxt() throws IOException {
    series = new XYSeries("Velocidade do vento");
    FileReader reader = new FileReader("log.txt");
    BufferedReader br = new BufferedReader(reader);
    String linha;
    while ((linha = br.readLine()) != null);
    String[] items = linha.split(",");

    if (items.length > 1 && items[0].equals("104")) {
        int x = IntegerparseInt(items[3]);
        int y = IntegerparseInt(items[4]);
        series.add(x, y);
    }

    try {
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

public int IntegerparseInt(String string) {
    throw new UnsupportedOperationException("Not yet implemented");
}

public XYSeriesDemo(final String title, XYSeries dados) {

    super(title);

    //XYSeries series = new XYSeries("Velocidade do vento");
    //series.add(x, y);
    //series.add(4.0, -0.785);
    //series.add(2.5, 90.0);
    //series.add(5.0, -105.0);
    //series.add(8.7, 150.0);
    //series.add(10.0,101.0);
    //series.add(11.0, 100.0);
    final XYSeriesCollection data = new XYSeriesCollection(dados);
    final JFreeChart chart = ChartFactory.createXYLineChart("Anemômetro",
            "Data", "m/s",
            data, PlotOrientation.VERTICAL, true, true, false);
    final ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(1000, 400));
    setContentPane(chartPanel);

}

/**
 * @param args the command line arguments
 */
public static void main(final String[] args) {
    
    LerTxt();
    final XYSeriesDemo demo = new XYSeriesDemo("Gráfico Modelo", series);
    demo.pack();
    RefineryUtilities.centerFrameOnScreen(demo);
    demo.setVisible(true);
}

}[/code]

O meu problema é o seguinte: preciso chamar a função LerTxt para adicionar valores na variável series e plotar o gráfico.
Não estou conseguindo chamar esta função dentro do public static void main.
Alguém poderia me ajudar?
Obrigado
Eduardo

Porque é que a variável series é static?

Porque é que o método LerTxt não é só chamado depois da criação do objecto?

Parece haver aí alguma confusão entre static e não static. Um método static (main) não pode aceder a métodos ou variaveis não static.

Eu sugeria o seguinte:

  • a variavel series não deveria ser static
  • o construtor não deve criar o gráfico mas apenas definir o título (deve ter apenas um parâmetro)
  • o restante código do construtor passa para um método drawChart(), que não precisa de qualquer parâmetro.
  • o main ficaria:
 
         final XYSeriesDemo demo = new XYSeriesDemo("Gráfico Modelo");  
         demo.LerTxt();  //Le dados
         demo.drawChart(); //Cria o chart
         demo.pack();  
         RefineryUtilities.centerFrameOnScreen(demo);  
         demo.setVisible(true);  

fiz as modificações que vc sugeriu, mas dá os seguintes erros.

na sua linha 1:

cannot find symbol
symbol: construtor XYSeriesDemos(java.lang.String)
location: class xyseries.XYSeriesDemo

e na linha 3:

not a statement

e agora?
nao sei o q fazer.

Atenção que eu postei apenas o código main. Há alterações a fazer ao restante código, que não pus o código:

  • a variavel series não deveria ser static
  • o construtor não deve criar o gráfico mas apenas definir o título (deve ter apenas um parâmetro)
  • o restante código do construtor passa para um método drawChart(), que não precisa de qualquer parâmetro.