簡體   English   中英

如何從Jfree圖表的圖像中獲取圖像映射

[英]how to get image map from Jfree chart's Image

在條形圖中,我想為每種顏色(或段)使用超鏈接。 為此,我需要使用Image MAP(使用Jfree圖表)。 我的代碼是通過Jfree圖表創建圖像,但我也想要每個顏色代碼的單獨超鏈接。 能否請您根據顏色代碼或行鍵或列鍵從Jfree圖表的圖像中獲取坐標。

公共課演示{

public static void main(String arg[]) throws IOException{

    DefaultCategoryDataset result = new DefaultCategoryDataset();

     result.addValue(20.3, "Apraisal Forms", "Dtest");
        result.addValue(19.4, "Resignation  Form", "Dtest");
        result.addValue(16.5, "HES forms", "Dtest");
        result.addValue(8, "Feedback forms", "Dtest");

        result.addValue(27.2, "Apraisal Forms", "HR Dept");
        result.addValue(5.9, "Resignation  Form", "HR Dept");
        result.addValue(14.4, "Feedback forms", "HR Dept");
        result.addValue(4, "HES forms", "HR Dept");

    JFreeChart chart = ChartFactory.createStackedBarChart3D("overview by Departments", "x label", "Message Count", result, PlotOrientation.VERTICAL, true, true, true);

    ChartUtilities.saveChartAsJPEG(new File("D:\\chart.jpg"), chart, 500, 300);
      }
    }

我通過實現ToolTipTagFragmentGeneratorURLTagFragmentGenerator完成了它。 這是完整的代碼:

public class Demo {

    public static void main(String arg[]) throws IOException {

        DefaultCategoryDataset result = new DefaultCategoryDataset();
        result.addValue(20.3, "Apraisal Forms", "Dtest");
        result.addValue(19.4, "Resignation  Form", "Dtest");
        result.addValue(16.5, "HES forms", "Dtest");
        result.addValue(8, "Feedback forms", "Dtest");

        result.addValue(27.2, "Apraisal Forms", "HR Dept");
        result.addValue(5.9, "Resignation  Form", "HR Dept");
        result.addValue(14.4, "Feedback forms", "HR Dept");
        result.addValue(4, "HES forms", "HR Dept");

        result.addValue(18.4, "Resignation  Form", "Admin Dept");
        result.addValue(16.1, "HES forms", "Admin Dept");
        result.addValue(13.7, "Feedback forms", "Admin Dept");

        JFreeChart chart = ChartFactory.createStackedBarChart3D(
            "overview by Departments", "x label", "Message Count", result,
            PlotOrientation.VERTICAL, true, true, true);

        SubCategoryAxis domainAxis = new SubCategoryAxis("Name of Department");
        domainAxis.setCategoryMargin(0.60);

        CategoryPlot plot = chart.getCategoryPlot();
        plot.setDomainAxis(domainAxis);

        String map = "";

        ChartRenderingInfo info = new ChartRenderingInfo(
            new StandardEntityCollection());

        try {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ChartUtilities.writeChartAsPNG(out, chart, 600, 400, info);

            ToolTipTagFragmentGenerator tooltipConstructor = new ToolTipTagFragmentGenerator() {
                public String generateToolTipFragment(String arg0) {
                    String toolTip = " title = \"value" + arg0 + "\"";
                    return (toolTip);
                }
            };

            URLTagFragmentGenerator urlConstructor = new URLTagFragmentGenerator() {
                public String generateURLFragment(String arg0) {
                    String address = " href=\"ControllerAddress\\methodName?"
                        + arg0 + "\"";
                    return (address);
                }
            };

            map = ChartUtilities.getImageMap("chart", info, tooltipConstructor,
                urlConstructor);
            out.close();
        } catch (IOException e) {
            System.out.println(e);
        }
        System.out.println(map);
        ChartFrame frame1 = new ChartFrame("Bar Chart", chart);
        frame1.setVisible(true);
        frame1.setSize(600, 350);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM