java - How to rectify this program? -


this program display pie chart. have button. program have written, creates 2 separate frames , 1 frame pie chart , other button. how put both button , pie chart on same frame?? can please rectify program.

import java.awt.*;  import org.jfree.chart.*;  import org.jfree.chart.title.*;  import org.jfree.data.general.defaultpiedataset;  import org.jfree.ui.*;  import java.io.*;  import javax.swing.*;  import java.awt.event.*;  import javax.swing.filechooser.*;  public class pie{   public static void getfile(file f) {      system.out.println("file is: "+f.getname());  }  public static void main(string[] args) {     jpanel panel=new jpanel();      panel.setlayout(null);      jbutton b=new jbutton("open file");      b.addactionlistener(new actionlistener()   {          public void actionperformed(actionevent e)    {          jfilechooser chooser=new jfilechooser();          int ret = chooser.showdialog(null, "open file");          if (ret == jfilechooser.approve_option)          {          file file = chooser.getselectedfile();          getfile(file);          }         }      } );        b.setbounds(50,40,100,35);         panel.add(b);      defaultpiedataset piedataset = new defaultpiedataset();     iedataset.setvalue("a", new integer(10));    piedataset.setvalue("b", new integer(20));    piedataset.setvalue("c", new integer(30));    piedataset.setvalue("d", new integer(10));    piedataset.setvalue("e", new integer(20));    piedataset.setvalue("f", new integer(10));    freechart chart = chartfactory.createpiechart("pie chart using jfreechart", piedataset, true,true,true);    chartframe frame1=new chartframe("pie chart",chart);    frame1.add(panel);    frame1.setvisible(true);    frame1.setsize(600,600);   }  } 

  1. don't use absolute layout unless necessary. rely on layout managers, pref/min/max size , constraints size , position components. means should not call setbounds/setsize/setlocation on components, let layout manager you.
  2. init ui edt (event dispatching tread)
  3. you don't filechooser currently
  4. try avoid static , instead use new something()
  5. don't use new integer() rather use integer.valueof() (and valid primitive wrapping classes, boolean, short, long, ...)

i not sure how 2 frames, got code working modifying way.

import java.awt.borderlayout; import java.awt.flowlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.io.file;  import javax.swing.jbutton; import javax.swing.jfilechooser; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.swingutilities;  import org.jfree.chart.chartfactory; import org.jfree.chart.chartpanel; import org.jfree.chart.jfreechart; import org.jfree.data.general.defaultpiedataset;  public class pie {      private static void initui() {         jpanel panel = new jpanel(new flowlayout());         final jbutton b = new jbutton("open file");         b.addactionlistener(new actionlistener() {              @override             public void actionperformed(actionevent e) {                 jfilechooser chooser = new jfilechooser();                 int ret = chooser.showdialog(b, "open file");                 if (ret == jfilechooser.approve_option) {                     file file = chooser.getselectedfile();                     // don't know want                 }             }          });         panel.add(b);         defaultpiedataset piedataset = new defaultpiedataset();         piedataset.setvalue("a", integer.valueof(10));         piedataset.setvalue("b", integer.valueof(20));         piedataset.setvalue("c", integer.valueof(30));         piedataset.setvalue("d", integer.valueof(10));         piedataset.setvalue("e", integer.valueof(20));         piedataset.setvalue("f", integer.valueof(10));         jfreechart chart = chartfactory.createpiechart("pie chart using jfreechart", piedataset, true, true, true);         jframe frame1 = new jframe();         frame1.setdefaultcloseoperation(jframe.exit_on_close);         chartpanel chartpanel = new chartpanel(chart);         // chartpanel.setpreferredsize(new dimension(600, 600));         frame1.getcontentpane().add(chartpanel, borderlayout.center);         frame1.getcontentpane().add(panel, borderlayout.south);         frame1.pack();         frame1.setvisible(true);     }      public static void main(string[] args) {         swingutilities.invokelater(new runnable() {              @override             public void run() {                 initui();             }         });     }  } 

Comments

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -