2011-11-20 3 views
0

Im netbeans gui 편집기를 사용하고 자체가 내부 프레임에있는 Jfreechart를 추가하려고하는데이 내부 프레임을 패널에 추가하려고합니다.Netbeans의 패널에 Jfreechart (원형 차트)를 추가하는 방법

http://www.flickr.com/photos/[email protected]/6370734167/

내부 프레임도 패널 "Estadisticas"나는 그것을 실행에 표시되지 않습니다 :이 이미지에서 볼 수 있듯이, IM (초보자가 직접하기 때문에 미안 해요 이미지를 게시하지 못할) 코드로 GUI를 수행하지 않기 때문에 어렵다고 생각합니다.하지만 그렇게 힘들어서는 안됩니다. 누구든지 올바르게 추가하면 도움이 될 것입니다. 여기에 내가 시험해 본 코드가 있습니다.

private void display() { 
     DefaultPieDataset pieDataset = new DefaultPieDataset(); 
    pieDataset.setValue("One", new Integer(10)); 
    pieDataset.setValue("Two", new Integer(20)); 
    pieDataset.setValue("Three", new Integer(30)); 
    pieDataset.setValue("Four", new Integer(10)); 
    pieDataset.setValue("Five", new Integer(20)); 
    pieDataset.setValue("Six", new Integer(10)); 
    JFreeChart chart = ChartFactory.createPieChart3D(
     "3D Pie Chart", pieDataset, true, true, true); 
    ChartPanel cp = new ChartPanel(chart); 
    // JInternalFrame jif = new JInternalFrame(
    // "Chart", true, true, true, true); 
    this.ji.add(cp); //ji is the name of the internal frame 
    this.ji.pack(); 
    this.ji.setVisible(true); 
    this.ji.setSize(100, 100); 

    JDesktopPane dtp = new JDesktopPane(); 
    dtp.add(ji); 
    this.jpEstadisticas.add(dtp); //jpEstadisticas the name of the main "Estadisticas"panel 

} 
+0

단순히 손으로 코딩하여 추가하지 않는 이유는 무엇입니까? –

답변

-1

차트 패널을 기본 프레임에 추가하지 말고 대신 내용 패널에 추가하십시오. 넷빈즈에서 , 메인 프레임에 패널을 추가하고 그것을 chartPanel 같은 것을 호출 GUI 편집기 (안 코드 편집기)에서 : this.ji.getContentPane().add(cp)

또는 더 나은에 의해 replace this.ji.add(cp);. 표시하려는 다른 모든 컨트롤을 추가하고 원하는대로 배치하십시오. 완료되면 코드 편집기로 다시 전환하십시오.

// Inside the initializeComponents() method 
// Find and replace 
chartPanel = new JPanel(); 
// By 
chartPanel = createChartPanel(); 

// Create chart panel method 
public JPanel createChartPanel(){ 
    DefaultPieDataset pieDataset = new DefaultPieDataset(); 
    pieDataset.setValue("One", new Integer(10)); 
    pieDataset.setValue("Two", new Integer(20)); 
    pieDataset.setValue("Three", new Integer(30)); 
    pieDataset.setValue("Four", new Integer(10)); 
    pieDataset.setValue("Five", new Integer(20)); 
    pieDataset.setValue("Six", new Integer(10)); 
    JFreeChart chart = ChartFactory.createPieChart3D("3D Pie Chart", pieDataset, true, true, true); 
    return new ChartPanel(chart); 
} 
+0

아직 다른 사람의 아이디어가 있습니까? –

+0

내 대답을 편집했습니다. 시도해보고 알려주세요. :) – GETah

+0

그 방법을 편집 할 수 없습니다. –

1

JFrame의 내용 창에 dtp를 추가하지 않았습니다. NetBeans의 UI 편집기를 사용할 수 있습니다.

+0

여전히 원형 차트가 표시되지 않습니까? : –

+0

JDesktopPane/JInternalFrame의 사용법에 문제가있어 야합니다 http : //www.roseindia.net/java/example/java/swing/AllFrameDesktopContainer.shtml (http : // 다음에 공백 추가) 그렇지 않으면 표시하려고 시도하십시오 단순한 JLabel –

0

내가 당신을 위해 작동 코드를 다음과 같은 생각 : 메인 프레임의 생성자에서 다음을 수행

import org.jfree.chart.ChartPanel; 
import org.jfree.data.general.DefaultPieDataset; 
import org.jfree.data.general.PieDataset; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.ChartFactory; 

public class PieChartJFrame extends javax.swing.JFrame { 

/** Creates new form PieChartJFrame */ 
ChartPanel chartPanel; 
public PieChartJFrame() { 
    initComponents(); 
} 

private PieDataset createPieDataSet() { 

    DefaultPieDataset pieDataset = new DefaultPieDataset(); 
    pieDataset.setValue("Othes", new Integer(15)); 
    pieDataset.setValue("PHP", new Integer(15)); 
    pieDataset.setValue("Java", new Integer(30)); 
    pieDataset.setValue("Perl", new Integer(10)); 
    pieDataset.setValue("C,C++,C#", new Integer(30)); 

    return pieDataset; 

} 

private JFreeChart create3DPieChart(PieDataset dataset){ 

    /** Create a PieDataSet* */ 


    /** Create 3D Pie Chart based on this dataset* */ 
    JFreeChart chart = ChartFactory.createPieChart3D(
      "Popularity of Languages", dataset, true, true, true); 

    return chart; 


} 

/** This method is called from within the constructor to 
* initialize the form. 
* WARNING: Do NOT modify this code. The content of this method is 
* always regenerated by the Form Editor. 
*/ 
@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

    jInternalChartFrame = new javax.swing.JInternalFrame(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    setName("Form"); // NOI18N 

    jInternalChartFrame.setName("jInternalChartFrame"); // NOI18N 
    jInternalChartFrame.setVisible(true); 

    javax.swing.GroupLayout jInternalChartFrameLayout = new javax.swing.GroupLayout(jInternalChartFrame.getContentPane()); 
    jInternalChartFrame.getContentPane().setLayout(jInternalChartFrameLayout); 
    jInternalChartFrameLayout.setHorizontalGroup(
     jInternalChartFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGap(0, 301, Short.MAX_VALUE) 
    ); 
    jInternalChartFrameLayout.setVerticalGroup(
     jInternalChartFrameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGap(0, 279, Short.MAX_VALUE) 
    ); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jInternalChartFrame, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addContainerGap(634, Short.MAX_VALUE)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jInternalChartFrame, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addContainerGap(300, Short.MAX_VALUE)) 
    ); 

    pack(); 
}// </editor-fold>       

/** 
* @param args the command line arguments 
*/ 

// Variables declaration - do not modify      
private javax.swing.JInternalFrame jInternalChartFrame; 
// End of variables declaration     

private void display(){ 

    final PieDataset dataset = this.createPieDataSet(); 
    final JFreeChart chart = this.create3DPieChart(dataset); 

    ChartPanel chartPanel = new ChartPanel(chart, false); 
    this.jInternalChartFrame.setContentPane(chartPanel); 
    this.jInternalChartFrame.pack(); 
    this.jInternalChartFrame.setVisible(true); 
    this.jInternalChartFrame.setSize(100, 100); 

    this.pack(); 
    this.setVisible(true); 

} 

public static void main(String args[]) { 
    /* Set the Nimbus look and feel */ 
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
    * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
    */ 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(PieChartJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(PieChartJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(PieChartJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(PieChartJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    //</editor-fold> 

    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 

     public void run() { 

      PieChartJFrame pieChart = new PieChartJFrame(); 

      pieChart.display(); 

     } 
    }); 
} 
} 
+0

it 많이 작동합니다! –

0

그런데 문제는 넷빈즈 GUI 편집기가() 메소드를 initComponents를 생성하는 것입니다 레이아웃의 모든 구성을 어디에서 할 수 있습니까? 이제 NetBeans가 사용자를 허용하지 않으므로이 메서드를 직접 수정할 수 없습니다. IDE 외부에서 수정하더라도 원본 폼으로 다시 변경됩니다. 그러나 코드의 일부를 수정하는 방법이 있습니다.이 경우에는 효과가 있습니다. GETah가 옳았다. 편집기에 다른 구성 요소를 추가하는 것처럼 프레임에 패널을 추가하십시오. 그것을 마우스 오른쪽 단추로 클릭하고 코드 사용자 정의를 선택하십시오. 이제 다음과 같은 줄이 있어야합니다.

jPanel1 = new javax.swing.jPanel(); 

다음 줄에는 기본 코드와 사용자 지정 만들기 중에서 선택할 수있는 드롭 다운 메뉴가 있어야합니다.

jPanel1 = cp; 

지금 작동 나를 위해 수행해야 : 사용자 정의 생성을 선택하고이에 라인을 변경하고 싶습니다.

관련 문제