将表上的数据显示到jfreechart中 [英] Displaying data on table into jfreechart

查看:77
本文介绍了将表上的数据显示到jfreechart中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个应用程序来检查两个或更多Java代码之间的相似性.现在,我有一个要存储在表中的数据.像这样构建该表的代码

I am building an application to check the similiairity between two java codes or more. Now, I have a data that I am store into a table. The code to build this table like this

public final class ASTParseUnit {

String IDLexer;

public ASTParseUnit(final IParserSelector parserSelector) {
    this.parserSelector = parserSelector;
}

public String getIDLexer() {
    return IDLexer;
}

public void setIDLexer(String iDLexer) {
    IDLexer = iDLexer;
}

public ASTManager parse(final JCCDFile[] files) {

    final ASTManager container = new ASTManager(
            TipeNode.PROJECT.getTipe(), null);


    JCCDFile temp;
    temp = files[0];
    String name = temp.getName(); 
    String idLexerSeleksi = "";

    StringBuilder nameOfFileMainFile = new StringBuilder();

    StringBuilder countLevenstheins = new StringBuilder();
    StringBuilder countJaccards = new StringBuilder();
    StringBuilder countCosines = new StringBuilder();


    for (final JCCDFile file : files) {
        container.tandaiNodeRoot(); 

        parseTree(file, container);
        if (name.equals(file.getName())) {
            idLexerSeleksi = getIDLexer();
        }

        LevenshteinDistance lv = new LevenshteinDistance();
        SimilarityRunner sr = new SimilarityRunner(); // my class to count similiarity

        if (idLexerSeleksi != getIDLexer()) {

            nameOfFileMainFile.append(file.getName()); 
            System.out.println(temp.getName() + " ==> " + file.getName());



            countLevenstheins.append(lv.printDistance(idLexerSeleksi, getIDLexer()));
            countJaccards.append(sr.hitungJaccard(idLexerSeleksi, getIDLexer()));
            countCosines.append(sr.hitungCosine(idLexerSeleksi, getIDLexer()));

        }
    }

    String enemy = nameOfMainFile.toString();
    String resultOfLevenstheins = countLevenstheins.toString();
    String resultOfJaccards = countJaccards.toString();
    String resultOfCosines = countCosines.toString();

    DefaultTableModel model = (DefaultTableModel) Main_Menu.jTable3.getModel();
    List<Report3> theListData = new ArrayList<Report3>();
    Report3 persentaseTabel = new Report3();

    persentaseTabel.setMainFile(name);
    persentaseTabel.setComparingFile(enemy);
    persentaseTabel.setLevenstheins(resultOfLevenstheins);
    persentaseTabel.setJaccard(resultOfJaccards);
    persentaseTabel.setCosine(resultOfCosines);

    theListData.add(persentaseTabel);
    for (Report3 report3 : theListData) {
        model.addRow(new Object[]{
            report3.getMainFile(),
            report3.getComparingFile(),
            report3.getLevenstheins(),
            report3.getJaccard(),
            report3.getCosine(),});
    }

    return container;
}

现在,如何将该表表示为jfreeChart? 这是我的jfreechart代码...

Now, How can I representation that table into a jfreeChart ? This is my jfreechart code...

public class LayeredBarChartDemo11 extends ApplicationFrame {

public LayeredBarChartDemo11(String s) {
    super(s);


    CategoryDataset dataset = createDataset();
    JFreeChart chart = createChart(dataset);
    ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
    setContentPane(chartPanel);
    chartPanel.setMouseWheelEnabled(true);

    //Main_menu is my form
    Main_Menu.presentase.removeAll();
    Main_Menu.presentase.setLayout(new java.awt.BorderLayout());
    Main_Menu.presentase.add(chartPanel);
}

private static CategoryDataset createDataset() {
    String s = "Levensthein";
    String s1 = "Jaccard";
    String s2 = "Cosine";
    String s3 = "a.java";
    String s4 = "b.java";
    String s5 = "c.java";

    DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
    defaultcategorydataset.addValue(100D, s, s3);
    defaultcategorydataset.addValue(20, s1, s3);

    defaultcategorydataset.addValue(40D, s, s4);
    defaultcategorydataset.addValue(170, s, s5);
    defaultcategorydataset.addValue(69, s1, s4);
    defaultcategorydataset.addValue(51, s1, s5);
    defaultcategorydataset.addValue(32, s2, s3);
    defaultcategorydataset.addValue(87, s2, s4);
    defaultcategorydataset.addValue(68, s2, s5);
    defaultcategorydataset.addValue(89, s2, s4);
    defaultcategorydataset.addValue(8, s2, s5);
    return defaultcategorydataset;
}

private static JFreeChart createChart(CategoryDataset categorydataset) {
    JFreeChart jfreechart = ChartFactory.createBarChart("Persentase Kemiripan", "File Pembanding", "File Utama", categorydataset, PlotOrientation.HORIZONTAL, true, true, false);
    CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
    categoryplot.setDomainGridlinesVisible(true);
    categoryplot.setRangePannable(true);
    categoryplot.setRangeZeroBaselineVisible(true);
    categoryplot.configureRangeAxes();
    NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
    numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
    LayeredBarRenderer layeredbarrenderer = new LayeredBarRenderer();
    layeredbarrenderer.setDrawBarOutline(false);
    categoryplot.setRenderer(layeredbarrenderer);
    categoryplot.setRowRenderingOrder(SortOrder.DESCENDING);
    GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F, Color.blue, 0.0F, 0.0F, new Color(0, 0, 64));
    GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.green, 0.0F, 0.0F, new Color(0, 64, 0));
    GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, new Color(64, 0, 0));
    layeredbarrenderer.setSeriesPaint(0, gradientpaint);
    layeredbarrenderer.setSeriesPaint(1, gradientpaint1);
    layeredbarrenderer.setSeriesPaint(2, gradientpaint2);
    return jfreechart;
}

public static JPanel createDemoPanel() {
    JFreeChart jfreechart = createChart(createDataset());
    ChartPanel chartpanel = new ChartPanel(jfreechart);
    chartpanel.setMouseWheelEnabled(true);
    return chartpanel;
}

这是我的应用程序截图 https://www.dropbox.com/s/opmao5l9sy0df8v/New%20Picture%20%2810%29.png

This is my screenshot of my application https://www.dropbox.com/s/opmao5l9sy0df8v/New%20Picture%20%2810%29.png

推荐答案

假定您希望图表反映(可能更改的)表条目,请添加

Assuming that you want the chart to reflect the (possibly changing) table entries, add a TableModelListener to your TableModel. Based on the TableModelEvent received, update the CategoryDataset accordingly; the listening chart will update itself in response.

如果在评估查询和比较功能后表模型没有更改,请使用JDBCCategoryDataset,在此处中提及,查询数据库;然后构造相应的表模型.

If the table model does not change after the query and comparison functions are evaluated, use JDBCCategoryDataset, mentioned here, to query the database; then construct the corresponding table model.

这篇关于将表上的数据显示到jfreechart中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆