Merci SheikYerbouti pour le lien du tuto First_Bean, cela me permet de comprendre de mieux en mieux les JavaBean.
J'ai décidé de me lancer en faisant une JavaBean pour JFreechart et à l'exécution rien ne s'affiche. Alors si tu peux jeter un coup d'oeil sur mon code pr m'aider à trouver ce qui ne va pas.
Code trouvé sur le net qui marche après test et à partir duquel je m'inspire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/**
 * @(#)PieChartExample.java
 *
 *
 * @author 
 * @version 1.00 2009/12/18
 */
 
 
// Import the Swing classes
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
// Import the JFreeChart classes
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.data.*;
import org.jfree.data.general.*;
 
public class PieChartExample extends JPanel
{
  // Holds the data
  private DefaultPieDataset dataset = new DefaultPieDataset();
 
  // Create a set of charts
  private JFreeChart chart1;
  private JFreeChart chart2;
  private JFreeChart chart3;
  private JFreeChart chart4;
 
  // Create a set of panels that can show charts
  private ChartPanel panel1;
  private ChartPanel panel2;
  private ChartPanel panel3;
  private ChartPanel panel4;
 
  public PieChartExample()
  {
    // Initialize the dataset
    dataset.setValue( "California", new Double( 10.0 ) );
    dataset.setValue( "Arizona", new Double( 8.0 ) );
    dataset.setValue( "New Mexico", new Double( 8.0 ) );
    dataset.setValue( "Texas", new Double( 40.0 ) );
    dataset.setValue( "Louisiana", new Double( 8.0 ) );
    dataset.setValue( "Mississippi", new Double( 4.0 ) );
    dataset.setValue( "Alabama", new Double( 2.0 ) );
    dataset.setValue( "Florida", new Double( 20.0 ) );
 
    // Create the charts
    chart1 = ChartFactory.createPieChart(
      "Driving Time Spent Per State (Flat Pie Chart)", // The chart title
      dataset,         // The dataset for the chart
      true,          // Is a legend required?
      true,          // Use tooltips
      false          // Configure chart to generate URLs?
    );
    chart2 = ChartFactory.createPieChart(
      "Driving Time Spent Per State (Exploded Pie Chart)", // The chart title
      dataset,         // The dataset for the chart
      true,          // Is a legend required?
      true,          // Use tooltips
      false          // Configure chart to generate URLs?
    );
    PiePlot plot = ( PiePlot )chart2.getPlot();
    plot.setExplodePercent( 3, 0.25 );
 
    chart3 = ChartFactory.createPieChart3D(
      "Driving Time Spent Per State (3D Pie Chart)", // The chart title
      dataset,         // The dataset for the chart
      true,          // Is a legend required?
      true,          // Use tooltips
      false          // Configure chart to generate URLs?
    );
    chart4 = ChartFactory.createPieChart3D(
      "Driving Time Spent Per State (3D with Transparency)", // The chart title
      dataset,         // The dataset for the chart
      true,          // Is a legend required?
      true,          // Use tooltips
      false          // Configure chart to generate URLs?
    );
    PiePlot3D plot4 = ( PiePlot3D )chart4.getPlot();
    plot4.setForegroundAlpha( 0.6f );
 
    // Create this panel
    this.setLayout( new GridLayout( 2, 2 ) );
    this.panel1 = new ChartPanel( chart1 );
    this.panel2 = new ChartPanel( chart2 );
    this.panel3 = new ChartPanel( chart3 );
    this.panel4 = new ChartPanel( chart4 );
    this.add( panel1 );
    this.add( panel2 );
    this.add( panel3 );
    this.add( panel4 );
  }
 
  public static void main( String[] args )
  {
    JFrame frame = new JFrame( "My Trip Driving From CA to FL..." );
    PieChartExample chart = new PieChartExample();
    frame.getContentPane().add( chart, BorderLayout.CENTER );
    frame.setSize( 640, 480 );
    frame.setVisible( true );
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  }
}
Mon Java Bean pour encapsuler Jfreechart dans Oracle Forms 10g:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
 
package oracle.forms.fjc;
 
import com.sun.org.apache.xml.internal.security.Init;
 
import java.awt.Color;
 
import java.util.StringTokenizer;
 
import javax.swing.BorderFactory;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
 
import oracle.forms.handler.IHandler;
import oracle.forms.ui.CustomEvent;
import oracle.forms.properties.ID;
import oracle.forms.ui.VBean;
import oracle.forms.engine.Main;
import oracle.forms.engine.*;
import oracle.forms.handler.*;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
 
 
public class Jfreechart extends VBean{
 
  public final static ID SHOWPIECHART     = ID.registerProperty("SHOW_PIECHART");  
  public final static ID SETDATASETVALUE  = ID.registerProperty("SET_DATASET_VALUE");      
 
    static IHandler mHandler;
 
  private ChartPanel panel = null ;
 
  private JFreeChart chart;
  // Holds the data
  private DefaultPieDataset dataset = null;
  private   boolean     bLog = false ;
  private   Color       cDefaultColor ;
  // default constructor
  public Jfreechart() {
    super();
  }
 
  public void init(IHandler handler){
    super.init(handler);
    mHandler = handler;
    // put your initialisation instructions here
    try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
         SwingUtilities.updateComponentTreeUI(this);
    }
    catch (Exception ex){
        ex.printStackTrace();
    }             
    // create the panel
    panel = new ChartPanel(null);
    panel.setSize(this.getWidth(),this.getHeight()) ;
    panel.setVisible(true);
    panel.setBorder(BorderFactory.createEmptyBorder());
 
  }      
 
  /**
  * Set the properties to the bean
  **/    
  public boolean setProperty(ID property, Object value){
 
    if(property == ID.VISIBLE && cDefaultColor == null){
       cDefaultColor = this.getParent().getBackground() ;
    }
 
   if(property == SETDATASETVALUE){
       String libelle = null;
       double val = 0.0;
       String sValue = value.toString();
       String sProp="";
       StringTokenizer st = new StringTokenizer(sValue,",");
       if(sValue != null) {
           int x = sValue.indexOf(",");
           // coordinates given ?
           if(x != -1){
               try { 
                    libelle = sValue.substring(0,x);
                    val = Double.parseDouble(sValue.substring(x+1,sValue.length()));
               } catch(Exception e) {;}
           }
       }
       if (dataset == null) dataset = new DefaultPieDataset();
       dataset.setValue(libelle, new Double( val ) );
       System.out.println("SET_DATASET_VALUE =" + libelle + " " + val) ;   
 
       return true;       
    }
    else if (property == SHOWPIECHART){
      // Create the charts
      /*if (dataset != null){
         chart = ChartFactory.createPieChart(
                 "Driving Time Spent Per State (Flat Pie Chart)", // The chart title
                 dataset,         // The dataset for the chart
                 true,          // Is a legend required?
                 true,          // Use tooltips
                 false          // Configure chart to generate URLs?
         );
         if (panel == null) panel = new ChartPanel( chart );
         else {
           panel.removeAll();
           panel.setChart(chart);
         }
         panel.repaint();
         panel.setOpaque(true);
         panel.setVisible(true);
      }
      else {*/
         dataset = new DefaultPieDataset();
         dataset.setValue( "California", new Double( 10.0 ) );
         dataset.setValue( "Arizona", new Double( 8.0 ) );
         dataset.setValue( "New Mexico", new Double( 8.0 ) );
         dataset.setValue( "Texas", new Double( 40.0 ) );
         dataset.setValue( "Louisiana", new Double( 8.0 ) );
         dataset.setValue( "Mississippi", new Double( 4.0 ) );
         dataset.setValue( "Alabama", new Double( 2.0 ) );
         dataset.setValue( "Florida", new Double( 20.0 ) );
        chart = ChartFactory.createPieChart(
                "Driving Time Spent Per State (Flat Pie Chart)", // The chart title
                dataset,         // The dataset for the chart
                true,          // Is a legend required?
                true,          // Use tooltips
                false          // Configure chart to generate URLs?
        );
        if (panel == null) panel = new ChartPanel( chart );
        else {
          panel.removeAll();
          panel.setChart(chart);
        }
        panel.repaint();
        panel.setOpaque(true);
        panel.setVisible(true);
      //}
       return true;
    }
    else { // default behaviour
 
       return super.setProperty(property, value);
    }  
  }
 
  /**
  * Get the properties of the bean
  **/
  public Object getProperty(ID property){
       return super.getProperty(property);
  }
}
et dans le bouton de ma forms 10 g qui une copie de celle de Fisrt_Bean que j'ai modifié
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set_Custom_Property( 'BL.BEAN_AREA', 1, 'SHOW_PIECHART','true') ;
Merci pour votre aide