2015-04-11 3 views
0

Я пытаюсь прочитать файл CSV и построить график, основанный на нем. Однако, когда кадр отображается, он пуст. Любая идея, где я ошибаюсь?График Java Swing не отображается

import java.awt.Graphics; 
import java.awt.Polygon; 
import java.awt.Color; 
import javax.swing.*; 
import java.io.*; 
import java.util.Scanner; 


public class Poly extends JPanel 
{ 
int time[]=new int[10000]; 
int generated[]=new int[10000]; 

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 
    // Draw a Polygone 
    //int xValues[] = { 20, 40, 50, 30, 20, 15 }; 
    //int yValues[] = { 50, 50, 60, 80, 80, 60 }; 
    //Polygon polygon1 = new Polygon(xValues, yValues, 6); 
    //g.drawPolygon(polygon1);        
    // Draw a Polyline 
    //int xValues2[] = { 70, 90, 100, 80, 70, 65, 60 }; 
    //int yValues2[] = { 100, 100, 110, 110, 130, 110, 90 }; 
    g.setColor(Color.RED); 
    g.drawPolyline(time, generated, 10000);    
} 

public void run() 
{ 
    String csvFile = "VaryHarvesterSize_VaryEnergyBufferMax_InputFile(64050KPIT2011_AllYear.dat.keep).csv"; 
    String line = ""; 
    String cvsSplitBy = ","; 
    int k=0; 

    try 
    { 
     File summaryFile=new File(csvFile); 
     Scanner reader = new Scanner(summaryFile); 
     reader.nextLine(); 

     //System.out.println(reader.nextLine()); 
     while(k<10000) 
     { 
      // use comma as separator 
      line = reader.nextLine(); 
      String[] record = line.split(cvsSplitBy); 
      double temp=Double.parseDouble(record[0].trim()); 
    time[k]=(int)temp; 
      temp = Double.parseDouble(record[3].trim()); 
    generated[k]=(int)temp; 
      //System.out.println(record); 
      //System.out.println("Time="+time[k]+" Energy="+generated[k]); 
      k++; 

     } 
    } 

    catch(Exception e) 
    { 

     e.printStackTrace(); 
    } 



} 


public static void main (String[] args) 
{ 
    Poly obj=new Poly(); 
    obj.run(); 


    JFrame frame=new JFrame("Polygone And Polyline") ; 
    JPanel policePanel=new Poly(); 
    frame.add(policePanel); 
    frame.setSize(400,400); 
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
} 
} 

Я пробовал с жестко закодированными значениями, он отображается на кадре. Но значений в файле нет.

+0

1) Чтобы лучше помочь, отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверяемый пример) или [SSCCE] (http://www.sscce.org/) (Короткий, самосохраненный, правильный пример). Жесткий код некоторых данных для замены CSV. 2) Единственная пустая строка пробела в исходном коде - это все, что требуется *. Пустые строки после '{' или before '}' также типично избыточны. –

ответ

0
JPanel policePanel=new Poly(); 
    frame.add(policePanel); 

Здесь вы добавляете новую панель к раме. Однако вы вызывали запуск еще одного экземпляра Poly до этого. Это означает, что данные заполняются в другом экземпляре, который вы не добавили в фрейм. Вместо этого вызовите «run» на этом экземпляре, и он должен работать.

+0

Большое вам спасибо, это сделал трюк! – gjena

Смежные вопросы