[Java] Austausch v. Chart durch remove!?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Java] Austausch v. Chart durch remove!?

    Hi

    häng hier schon seit Stunden fest...

    Die Applikation hat auf der linken Seite ein JList. Bei Auswahl eines Wertes soll im Center des Frames ein Chart angezeigt werden. Funktioniert soweit nur bei der ersten Auswahl. Bei jeder weiteren frieren alle zuvor aufgerufenen Charts im Center ein u. das neu aufgerufene erscheint im Hintergrund. Ich hab schon alles Mögliche mit remove u. revalidate unternommen. Kann mir jemand sagen wo da der Fehler liegt!?

    Gruss u. DANKE

    Listener Klasse:

    Code:
    choseCompany = new JList(companyModel);
    //         choseCompany.setVisibleRowCount(5); // display five rows at once
            companyPanel.add(choseCompany, BorderLayout.CENTER);
                    
            choseCompany.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
            companyPanel.add(new JScrollPane(choseCompany));
            
            choseCompany.addListSelectionListener(
                new ListSelectionListener() // anonymous inner class
             {   
                public void valueChanged(ListSelectionEvent event)
                {
                   if(event.getValueIsAdjusting()== false)
                   {
                       //int which = choseCompany.getSelectedIndex();
                       String selectedCompany =  (String)choseCompany.getSelectedValue();
                       System.out.println("Chosen company: " +selectedCompany);
                       
                       oldContent.remove(centerPanel);
                       oldContent.revalidate();
                       Roi ratio = new Roi("Ratio Analysis", oldContent, selectedCompany);
    Chart Klasse:

    Code:
    public class Roi  {
    
    private JPanel chartContent;
    private String company;
    
            public Roi(String title, JPanel c, String s) {
            //super(title);
            chartContent = c;
            company = s;
            
            JPanel centerPanel = createPanel();
            chartContent.remove(centerPanel);
            chartContent.revalidate();
            //chartPanel.setPreferredSize(new Dimension(500, 270));
            chartContent.add(centerPanel);
            //setContentPane(centerPanel);
            
        }
    
        private  CategoryDataset createDataset() {
            
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            Database db = new Database();
            try
            {
            String sql = "SELECT balance_sheet.tangible_assets, balance_sheet.`year` FROM balance_sheet, companies WHERE companies.company_name = '"+ company + "' AND companies.company_id = balance_sheet.company_id";
            db.request(sql);
            System.out.println("made request");
            
    
                            
                while (db.result.next())
                {
                   System.out.println("found a result");
                    int   value = db.result.getInt( "tangible_assets" );
                   String  year = db.result.getString( "year" );  
                    
                  dataset.addValue(value, "Classes", year);
                }  
            }
            catch(SQLException e)
            {
                System.out.println("* Cannot create dataset! *");
                e.printStackTrace();
            }
             return dataset;
        }
        
        private static JFreeChart createChart(CategoryDataset dataset) {
            
            // create the chart...
            JFreeChart chart = ChartFactory.createLineChart(
                "ROI",   // chart title
                "Year",                       // domain axis label
                "Value",                   // range axis label
                dataset,                         // data
                PlotOrientation.VERTICAL,        // orientation
                false,                           // include legend
                true,                            // tooltips
                false                            // urls
            );
    
            //Subtitle
            chart.addSubtitle(new TextTitle(""));
            
            //Bottom text
            TextTitle source = new TextTitle(
                "" 
               
            );
            source.setFont(new Font("SansSerif", Font.PLAIN, 10));
            source.setPosition(RectangleEdge.BOTTOM);
            source.setHorizontalAlignment(HorizontalAlignment.RIGHT);
            chart.addSubtitle(source);
            
            //Background colour
            chart.setBackgroundPaint(Color.white);
    
            //Plot colours
            CategoryPlot plot = (CategoryPlot) chart.getPlot();
            plot.setBackgroundPaint(Color.white);
            plot.setRangeGridlinePaint(Color.lightGray);
    
            // customise the range axis...
            NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
            rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    
            // customise the renderer...
            LineAndShapeRenderer renderer 
                = (LineAndShapeRenderer) plot.getRenderer();
            renderer.setShapesVisible(true);
            renderer.setDrawOutlines(true);
            renderer.setUseFillPaint(true);
            renderer.setFillPaint(Color.white);
    
            return chart;
        }
        
       public  JPanel createPanel() {
            JFreeChart chart = createChart(createDataset());
            return new ChartPanel(chart);
        }
    }
Lädt...
X