title: JFreeChart with highlighted points
body: <p>I am using <code>JFreeChart</code> to draw a graph. The code is </p>
  
  <pre><code>package com.daya;
  
  import java.awt.Color;
  import java.io.BufferedReader;
  import java.io.DataInputStream;
  import java.io.FileInputStream;
  import java.io.InputStreamReader;
  
  import org.jfree.chart.ChartFactory;
  import org.jfree.chart.ChartPanel;
  import org.jfree.chart.JFreeChart;
  import org.jfree.chart.plot.PlotOrientation;
  import org.jfree.chart.plot.XYPlot;
  import org.jfree.data.xy.XYDataset;
  import org.jfree.data.xy.XYSeries;
  import org.jfree.data.xy.XYSeriesCollection;
  import org.jfree.ui.ApplicationFrame;
  import org.jfree.ui.RefineryUtilities;
  
  public class Two extends ApplicationFrame {
  
      public Two(final String title) {
          super(title);
          final XYDataset dataset = createDataset();
          final JFreeChart chart = createChart(dataset);
          final ChartPanel chartPanel = new ChartPanel(chart);
          chartPanel.setPreferredSize(new java.awt.Dimension(1200, 1100));
          setContentPane(chartPanel);
      }
  
      private XYDataset createDataset() {
          final XYSeries series1 = new XYSeries("SLMM");
          final XYSeries series2 = new XYSeries("FSPM");
          XYSeries series = new XYSeries("Power Comparision");
          final XYSeriesCollection dataset = new XYSeriesCollection();
          try {
              FileInputStream fstream = new FileInputStream("d:\\devs\\Result.txt");
              DataInputStream in = new DataInputStream(fstream);
              BufferedReader br = new BufferedReader(new InputStreamReader(in));
              String strLine;
              StringBuffer buffer = new StringBuffer();
              while ((strLine = br.readLine()) != null) {
                  buffer.append(strLine);
              }
              String message = buffer.toString();
              message = message.replaceAll(" ", "");
              String[] splitMessage = message.split("&amp;&amp;&amp;");
              for (int i = 0; i &lt; splitMessage.length; i++) {
                  double x = 0.0, y = 0.0;
                  String algType = "direct";
                  String[] insideSplit = splitMessage[i].split("\\|\\|");
                  if (insideSplit[0].equalsIgnoreCase("isStraightAlg:false")) {
                      algType = "indirect";
                  }
                  for (int j = 1; j &lt; insideSplit.length; j++) {
                      String[] valueSplit = insideSplit[j].split("\\:");
                      if (valueSplit[0].equalsIgnoreCase("Transactions")) {
                          x = Double.parseDouble(valueSplit[1]);
                      } else {
                          y = Double.parseDouble(valueSplit[1]);
                      }
                      //System.out.println(valueSplit[1]);
                  }
  
                  if (!algType.equalsIgnoreCase("direct")) {
                      System.out.println("X :" + x + " Y:" + y);
                      series1.add(x, y);
                  } else {
                      System.out.println("X :" + x + " Y:" + y);
                      series2.add(x, y);
                  }
              }
  
  
              dataset.addSeries(series1);
              dataset.addSeries(series2);
          } catch (Exception e) {
              e.printStackTrace();
          }
          return dataset;
      }
  
      private JFreeChart createChart(final XYDataset dataset) {
          final JFreeChart chart = ChartFactory.createXYLineChart(
              "Power Comparison",
              "Transaction",
              "Energy",
              dataset,
              PlotOrientation.VERTICAL,
              true,
              true,
              false);
          chart.setBackgroundPaint(Color.white);
          final XYPlot plot1 = chart.getXYPlot();
          plot1.setBackgroundPaint(Color.lightGray);
          plot1.setDomainGridlinePaint(Color.white);
          plot1.setRangeGridlinePaint(Color.white);
  
          final XYPlot plot2 = chart.getXYPlot();
          plot2.setBackgroundPaint(Color.lightGray);
          plot2.setDomainGridlinePaint(Color.white);
          plot2.setRangeGridlinePaint(Color.white);
  
          return chart;
      }
  
      public static void main(final String[] args) {
          final Two demo = new Two("Multi Line Chart");
          demo.pack();
          RefineryUtilities.centerFrameOnScreen(demo);
          demo.setVisible(true);
      }
  }
  </code></pre>
  
  <p>and the text file is :</p>
  
  <blockquote>
    <p>isStraightAlg : false || Transactions : 500 || Energy : 74267 &amp;&amp;&amp; isStraightAlg : true || Transactions : 500 || Energy : 55984 &amp;&amp;&amp; isStraightAlg : false || Transactions : 1000 || Energy : 169735 &amp;&amp;&amp; isStraightAlg : true || Transactions : 1000 || Energy : 162520 &amp;&amp;&amp; isStraightAlg : false || Transactions : 1500 || Energy : 333668 &amp;&amp;&amp; isStraightAlg : true || Transactions : 1500 || Energy : 313766 &amp;&amp;&amp; isStraightAlg : false || Transactions : 2000 || Energy : 494159 &amp;&amp;&amp; isStraightAlg : true || Transactions : 2000 || Energy : 481627 &amp;&amp;&amp; isStraightAlg : false || Transactions : 2500 || Energy : 594839 &amp;&amp;&amp; isStraightAlg : true || Transactions : 2500 || Energy : 594839 &amp;&amp;&amp; isStraightAlg : false || Transactions : 3000 || Energy : 847096 &amp;&amp;&amp; isStraightAlg : true || Transactions : 3000 || Energy : 842402 &amp;&amp;&amp; </p>
  </blockquote>
  
  <p>With the above code the graph is drawn. The graph is shown below. How can I show the exact points for what the graph is drawn, i.e selected <code>xy</code> point has to present with circle?</p>
  
  <p><img src="https://i.stack.imgur.com/FMtcq.png" alt="enter image description here"></p>