各位大侠给个Demo,不胜感激,
比如:一个JFrame里面设置2个Jpanel,每个Jpanel里显示一个饼状图,这只是我个人的想法,但是代码没实现出来,哪位大侠可以给出简单Demo,当然有更好的Demo希望各位分享一下,耽误你5分钟时间,我在线结贴。
先谢过。

解决方案 »

  1.   

    \jdk1.5.0_04\demo\jfc\SwingSet2\src\InternalFrameDemo.java
      

  2.   


    啊!?
    可以把InternalFrameDemo.java
    Ctrl+c然后Ctrl+v到这里来么?
    谢谢
      

  3.   


    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.text.*;
    import javax.swing.border.*;
    import javax.swing.colorchooser.*;
    import javax.swing.filechooser.*;
    import javax.accessibility.*;import java.awt.*;
    import java.awt.event.*;
    import java.beans.*;
    import java.util.*;
    import java.io.*;
    import java.applet.*;
    import java.net.*;/**
     * Internal Frames Demo
     *
     * @version 1.16 11/17/05
     * @author Jeff Dinkins
     */
    public class InternalFrameDemo extends DemoModule {
        int windowCount = 0;
        JDesktopPane desktop = null;    ImageIcon icon1, icon2, icon3, icon4;
        ImageIcon smIcon1, smIcon2, smIcon3, smIcon4;    public Integer FIRST_FRAME_LAYER  = new Integer(1);
        public Integer DEMO_FRAME_LAYER   = new Integer(2);
        public Integer PALETTE_LAYER     = new Integer(3);    public int FRAME0_X        = 15;
        public int FRAME0_Y        = 280;    public int FRAME0_WIDTH    = 320;
        public int FRAME0_HEIGHT   = 230;    public int FRAME_WIDTH     = 225;
        public int FRAME_HEIGHT    = 150;    public int PALETTE_X      = 375;
        public int PALETTE_Y      = 20;    public int PALETTE_WIDTH  = 260;
        public int PALETTE_HEIGHT = 260;    JCheckBox windowResizable   = null;
        JCheckBox windowClosable    = null;
        JCheckBox windowIconifiable = null;
        JCheckBox windowMaximizable = null;    JTextField windowTitleField = null;
        JLabel windowTitleLabel = null;
        /**
         * main method allows us to run as a standalone demo.
         */
        public static void main(String[] args) {
    InternalFrameDemo demo = new InternalFrameDemo(null);
    demo.mainImpl();
        }    /**
         * InternalFrameDemo Constructor
         */
        public InternalFrameDemo(SwingSet2 swingset) {
    super(swingset, "InternalFrameDemo", "toolbar/JDesktop.gif"); // preload all the icons we need for this demo
    icon1 = createImageIcon("ImageClub/misc/fish.gif", getString("InternalFrameDemo.fish"));
    icon2 = createImageIcon("ImageClub/misc/moon.gif", getString("InternalFrameDemo.moon"));
    icon3 = createImageIcon("ImageClub/misc/sun.gif",  getString("InternalFrameDemo.sun"));
    icon4 = createImageIcon("ImageClub/misc/cab.gif",  getString("InternalFrameDemo.cab")); smIcon1 = createImageIcon("ImageClub/misc/fish_small.gif", getString("InternalFrameDemo.fish"));
    smIcon2 = createImageIcon("ImageClub/misc/moon_small.gif", getString("InternalFrameDemo.moon"));
    smIcon3 = createImageIcon("ImageClub/misc/sun_small.gif",  getString("InternalFrameDemo.sun"));
    smIcon4 = createImageIcon("ImageClub/misc/cab_small.gif",  getString("InternalFrameDemo.cab")); // Create the desktop pane
    desktop = new JDesktopPane();
    getDemoPanel().add(desktop, BorderLayout.CENTER); // Create the "frame maker" palette
    createInternalFramePalette(); // Create an initial internal frame to show
    JInternalFrame frame1 = createInternalFrame(icon1, FIRST_FRAME_LAYER, 1, 1);
    frame1.setBounds(FRAME0_X, FRAME0_Y, FRAME0_WIDTH, FRAME0_HEIGHT); // Create four more starter windows
    createInternalFrame(icon1, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
    createInternalFrame(icon3, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
    createInternalFrame(icon4, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
    createInternalFrame(icon2, DEMO_FRAME_LAYER, FRAME_WIDTH, FRAME_HEIGHT);
        }    /**
         * Create an internal frame and add a scrollable imageicon to it
         */
        public JInternalFrame createInternalFrame(Icon icon, Integer layer, int width, int height) {
    JInternalFrame jif = new JInternalFrame(); if(!windowTitleField.getText().equals(getString("InternalFrameDemo.frame_label"))) {
        jif.setTitle(windowTitleField.getText() + "  ");
    } else {
        jif = new JInternalFrame(getString("InternalFrameDemo.frame_label") + " " + windowCount + "  ");
    } // set properties
    jif.setClosable(windowClosable.isSelected());
    jif.setMaximizable(windowMaximizable.isSelected());
    jif.setIconifiable(windowIconifiable.isSelected());
    jif.setResizable(windowResizable.isSelected()); jif.setBounds(20*(windowCount%10), 20*(windowCount%10), width, height);
    jif.setContentPane(new ImageScroller(this, icon, 0, windowCount)); windowCount++;

    desktop.add(jif, layer);   // Set this internal frame to be selected try {
        jif.setSelected(true);
    } catch (java.beans.PropertyVetoException e2) {
    } jif.show(); return jif;
        }    public JInternalFrame createInternalFramePalette() {
    JInternalFrame palette = new JInternalFrame(
        getString("InternalFrameDemo.palette_label")
    );
    palette.putClientProperty("JInternalFrame.isPalette", Boolean.TRUE);
    palette.getContentPane().setLayout(new BorderLayout());
    palette.setBounds(PALETTE_X, PALETTE_Y, PALETTE_WIDTH, PALETTE_HEIGHT);
    palette.setResizable(true);
    palette.setIconifiable(true);
    desktop.add(palette, PALETTE_LAYER); // *************************************
    // * Create create frame maker buttons *
    // *************************************
    JButton b1 = new JButton(smIcon1);
    JButton b2 = new JButton(smIcon2);
    JButton b3 = new JButton(smIcon3);
    JButton b4 = new JButton(smIcon4); // add frame maker actions
    b1.addActionListener(new ShowFrameAction(this, icon1));
    b2.addActionListener(new ShowFrameAction(this, icon2));
    b3.addActionListener(new ShowFrameAction(this, icon3));
    b4.addActionListener(new ShowFrameAction(this, icon4)); // add frame maker buttons to panel
    JPanel p = new JPanel();
    p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS)); JPanel buttons1 = new JPanel();
    buttons1.setLayout(new BoxLayout(buttons1, BoxLayout.X_AXIS)); JPanel buttons2 = new JPanel();
    buttons2.setLayout(new BoxLayout(buttons2, BoxLayout.X_AXIS)); buttons1.add(b1);
    buttons1.add(Box.createRigidArea(HGAP15));
    buttons1.add(b2); buttons2.add(b3);
    buttons2.add(Box.createRigidArea(HGAP15));
    buttons2.add(b4); p.add(Box.createRigidArea(VGAP10));
    p.add(buttons1);
    p.add(Box.createRigidArea(VGAP15));
    p.add(buttons2);
    p.add(Box.createRigidArea(VGAP10)); palette.getContentPane().add(p, BorderLayout.NORTH); // ************************************
    // * Create frame property checkboxes *
    // ************************************
    p = new JPanel() {
        Insets insets = new Insets(10,15,10,5);
        public Insets getInsets() {
    return insets;
        }
    };
    p.setLayout(new GridLayout(1,2));
            Box box = new Box(BoxLayout.Y_AXIS);
    windowResizable   = new JCheckBox(getString("InternalFrameDemo.resizable_label"), true);
    windowIconifiable = new JCheckBox(getString("InternalFrameDemo.iconifiable_label"), true);        box.add(Box.createGlue());
    box.add(windowResizable);
    box.add(windowIconifiable);
            box.add(Box.createGlue());
            p.add(box);        box = new Box(BoxLayout.Y_AXIS);
    windowClosable    = new JCheckBox(getString("InternalFrameDemo.closable_label"), true);
    windowMaximizable = new JCheckBox(getString("InternalFrameDemo.maximizable_label"), true);        box.add(Box.createGlue());
    box.add(windowClosable);
    box.add(windowMaximizable);
            box.add(Box.createGlue());
            p.add(box); palette.getContentPane().add(p, BorderLayout.CENTER);
    // ************************************
    // *   Create Frame title textfield   *
    // ************************************
    p = new JPanel() {
        Insets insets = new Insets(0,0,10,0);
        public Insets getInsets() {
    return insets;
        }
    }; windowTitleField = new JTextField(getString("InternalFrameDemo.frame_label"));
    windowTitleLabel = new JLabel(getString("InternalFrameDemo.title_text_field_label")); p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
    p.add(Box.createRigidArea(HGAP5));
    p.add(windowTitleLabel, BorderLayout.WEST);
    p.add(Box.createRigidArea(HGAP5));
    p.add(windowTitleField, BorderLayout.CENTER);
    p.add(Box.createRigidArea(HGAP5)); palette.getContentPane().add(p, BorderLayout.SOUTH); palette.show(); return palette;
        }
        class ShowFrameAction extends AbstractAction {
    InternalFrameDemo demo;
    Icon icon;


    public ShowFrameAction(InternalFrameDemo demo, Icon icon) {
        this.demo = demo;
        this.icon = icon;
    }

    public void actionPerformed(ActionEvent e) {
        demo.createInternalFrame(icon,
         getDemoFrameLayer(),
         getFrameWidth(),
         getFrameHeight()
        );
    }
        }    public int getFrameWidth() {
    return FRAME_WIDTH;
        }    public int getFrameHeight() {
    return FRAME_HEIGHT;
        }    public Integer getDemoFrameLayer() {
    return DEMO_FRAME_LAYER;
        }
        
        class ImageScroller extends JScrollPane {

    public ImageScroller(InternalFrameDemo demo, Icon icon, int layer, int count) {
        super();
        JPanel p = new JPanel();
        p.setBackground(Color.white);
        p.setLayout(new BorderLayout() );
        
        p.add(new JLabel(icon), BorderLayout.CENTER);
        
        getViewport().add(p);
                getHorizontalScrollBar().setUnitIncrement(10);
                getVerticalScrollBar().setUnitIncrement(10);
    }

    public Dimension getMinimumSize() {
        return new Dimension(25, 25);
    }

        }
        
        void updateDragEnabled(boolean dragEnabled) {
            windowTitleField.setDragEnabled(dragEnabled);
        }
        
    }
      

  4.   


    import javax.swing.*; 
    import java.awt.*;  
    public class Test {
        public static void main(String [] args){
            JFrame frame = new JFrame();
            frame.setSize(new Dimension(400,500));
            frame.setLocation(10,10);
           
            frame.setLayout(new FlowLayout());
            JPanel p1=new JPanel();
            JPanel p2=new JPanel();
            //把Jbutton替换为你的饼图应该就可以了。
            JButton  b1=new JButton("JPanel1");
            JButton  b2=new JButton("JPanel2");
            p1.add(b1);
            p2.add(b2);
            frame.add(p1, FlowLayout.LEFT);
            frame.add(p2, FlowLayout.CENTER);
            
            //在设置frame为显示状态
            frame.setVisible(true);
        }
    }
      

  5.   

    这想法确实很不错,但是我要加对象不是简单的Button,而是JFreeChart,把JFreeChart加到JPanel中,解决这个你就答全了。
      

  6.   

    呵呵……不好意思,我这里没有JFreeChart的jar包,无法继续做了。不过如果你能让一个饼图出来,两个也是一样的。
      

  7.   

    嗯嗯..饼图早上8点就出来了,但是现在停留在一个JFrame怎么可以显示出2个饼图,尝试用2个Jpanel分别装图。
    以下是实现一个饼显示出来的。PieDataset dataset = createDataset();//调用createDataset()方法,返回DefaultPieDataset对象
    JFreeChart chart = createChart(dataset, chartTitle);//调用createDataset()方法,返回JFreeChart对象
    ChartPanel chartPanel = new ChartPanel(chart);//一个Swing GUI component,用来显示JFreeChart
    chartPanel.setPreferredSize(new java.awt.Dimension(210, 280));//设置组件尺寸
    setContentPane(chartPanel);//设置 chartPanel 属性。此方法由构造方法调用。如果用Jpanel的话,那就要替代ChartPanel
    那就要把JFreeChart chart 放到Jpanel中,能解决这个问题我就成功了,各位还有什么好的见解吗?
      

  8.   


    import javax.swing.*; import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.plot.PiePlot;
    import org.jfree.data.general.DefaultPieDataset;
    import org.jfree.data.general.PieDataset;import java.awt.*;  
    public class Test {
        public static void main(String [] args){
            JFrame frame = new JFrame();
            frame.setSize(new Dimension(800,800));
            frame.setLocation(10,10);
           
            frame.setLayout(new FlowLayout());
            JPanel p1=new JPanel();
            JPanel p2=new JPanel();
            //把Jbutton替换为你的饼图应该就可以了。
            //JButton  b1=new JButton("JPanel1");
            //饼图1
            JFreeChart chart = createChart(createDataset());
           // JButton  b2=new JButton("JPanel2");
            ChartPanel localChartPanel = new ChartPanel(chart, false); 
            //饼图2
            JFreeChart chart2 = createChart(createDataset());
            ChartPanel localChartPanel2 = new ChartPanel(chart2, false); 
            p1.add(localChartPanel);
            //p1.add(b1);
            p2.add(localChartPanel2);
            frame.add(p1, FlowLayout.LEFT);
            frame.add(p2, FlowLayout.CENTER);
            
            //在设置frame为显示状态
            frame.setVisible(true);
        }
        /**
         * Creates a sample dataset.
         * 
         * @return A sample dataset.
         */
        private static PieDataset createDataset() {
            DefaultPieDataset dataset = new DefaultPieDataset();
            dataset.setValue("One", new Double(43.2));
            dataset.setValue("Two", new Double(10.0));
            dataset.setValue("Three", new Double(27.5));
            dataset.setValue("Four", new Double(17.5));
            dataset.setValue("Five", new Double(11.0));
            dataset.setValue("Six", new Double(19.4));
            return dataset;        
        }
        /**
         * Creates a chart.
         * 
         * @param dataset  the dataset.
         * 
         * @return A chart.
         */
        private static JFreeChart createChart(PieDataset dataset) {
            
            JFreeChart chart = ChartFactory.createPieChart(
                "Pie Chart Demo 1",  // chart title
                dataset,             // data
                true,               // include legend
                true,
                false
            );        PiePlot plot = (PiePlot) chart.getPlot();
            plot.setSectionOutlinesVisible(false);
            plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
            plot.setNoDataMessage("No data available");
            plot.setCircular(false);
            plot.setLabelGap(0.02);
            return chart;
            
        }
        
    }
      

  9.   

    其实思路就和上面是一样的。ChartPanel的父类就是JPanel。和JButton一样都是Component对象
    面板里面是可以嵌套面板的。希望对你有帮助。上面的例子是可以直接跑起来的。