一个JFrame里显示多个jfreechart图,怎么做?(在线结贴)

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

10 个解决方案

#1


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

#2


引用 1 楼 softroad 的回复:
\jdk1.5.0_04\demo\jfc\SwingSet2\src\InternalFrameDemo.java


啊!?
可以把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


引用 4 楼 lijiemissfei 的回复:
Java code


import javax.swing.*; 
import java.awt.*;  
public class Test {
    public static void main(String [] args){
        JFrame frame = new JFrame();
        frame.setSize(new Dimensio……

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

#6


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

#7


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

嗯嗯..饼图早上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对象
面板里面是可以嵌套面板的。希望对你有帮助。上面的例子是可以直接跑起来的。

#10


谢谢8楼大力支持,分给你了。

#1


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

#2


引用 1 楼 softroad 的回复:
\jdk1.5.0_04\demo\jfc\SwingSet2\src\InternalFrameDemo.java


啊!?
可以把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


引用 4 楼 lijiemissfei 的回复:
Java code


import javax.swing.*; 
import java.awt.*;  
public class Test {
    public static void main(String [] args){
        JFrame frame = new JFrame();
        frame.setSize(new Dimensio……

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

#6


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

#7


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

嗯嗯..饼图早上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对象
面板里面是可以嵌套面板的。希望对你有帮助。上面的例子是可以直接跑起来的。

#10


谢谢8楼大力支持,分给你了。