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:
Chart Klasse:
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);
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); } }