我做了一个JFreeChart的例子想把它嵌入到我已经做好的GUI中怎么嵌入啊,我想了很多办法都没成功,请教各位帮我实现,最好写原代码,毕竟我是个初学者,谢谢各位!
JFreeChart代码如下
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class XYSeriesDemo extends ApplicationFrame {   
    public XYSeriesDemo(final String title) {        super(title);
        final XYSeries series = new XYSeries("负荷—变形曲线");
        series.add(0.0, 0.0);
        series.add(5.0, 6.0);
        series.add(8.0, 10.0);
        series.add(12.5, 18.0);
        series.add(17.3, 18.0);
        series.add(21.2, 19.0);
        series.add(22.9, 100.0);
        series.add(25.6, 100.0);
        series.add(30.0, 10.0);
        final XYSeriesCollection data = new XYSeriesCollection(series);
        final JFreeChart chart = ChartFactory.createXYLineChart(
            "HuaLong Test ",
            "负荷(N)", 
            "变形1(mm)", 
            data,
            PlotOrientation.VERTICAL,
            true,
            true,
            false
        );        final XYPlot plot = (XYPlot) chart.getPlot();
        final NumberAxis axis = (NumberAxis) plot.getRangeAxis();
        axis.setAutoRangeIncludesZero(false);
        axis.setAutoRangeMinimumSize(1.0);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(1010, 710));
        setContentPane(chartPanel);    }    
    public static void main(final String[] args) {        final XYSeriesDemo demo = new XYSeriesDemo("负荷—变形曲线窗口 ");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);    }}
GUI代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
class MIS implements ActionListener {
private JFrame frame;
private JTabbedPane tp; private JLabel la11,la12,la13,la14;
private JTextField te11,te12,te13,te14;
private JButton bu11,bu12;
private JPanel p0,p1,p11,p12,p13,p14,p15;

private JLabel la21;
private JTextField te21;
private JButton bu21,bu22;
private JTextArea area;
private JScrollPane sp;
private JPanel p2,p21,p22;

private JLabel la31;
private JTextField te31;
private JButton bu31,bu32;
    private JPanel p3,p31,p32;


public MIS() {
la11 = new JLabel("最大力/强度");
te11 = new JTextField(10);
p11 = new JPanel();
p11.setLayout(new FlowLayout());
p11.add(la11);
p11.add(te11);

la12 = new JLabel("上屈服力/强度");
te12 = new JTextField(10);
p12 = new JPanel();
p12.setLayout(new FlowLayout());
p12.add(la12);
p12.add(te12);

la13 = new JLabel("下屈服力/强度 ");
te13 = new JTextField(10);
p13 = new JPanel();
p13.setLayout(new FlowLayout());
p13.add(la13);
p13.add(te13);

la14 = new JLabel("规定非比例延伸力/强度");
te14 = new JTextField(10);
p14 = new JPanel();
p14.setLayout(new FlowLayout());
p14.add(la14);
p14.add(te14);

bu11 = new JButton("确定");
bu12 = new JButton("清除");
p15 = new JPanel();
p15.setLayout(new FlowLayout());
p15.add(bu11);
p15.add(bu12);

p1 = new JPanel();
p1.setLayout(new GridLayout(0,1));
p1.add(p11);
p1.add(p12);
p1.add(p13);
p1.add(p14);
p1.add(p15);                p0=new JPanel();
                p0.setLayout(new BorderLayout());
                p0.add(p1,BorderLayout.WEST);

la21 = new JLabel("请输入导入文件名");
te21 = new JTextField(10);
bu21 = new JButton("确定");
bu22 = new JButton("清除");
p21 = new JPanel();
p21.setLayout(new FlowLayout());
p21.add(la21);
p21.add(te21);
p21.add(bu21);
p21.add(bu22);

area = new JTextArea(5,20);
sp = new JScrollPane(area,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
p22 = new JPanel();
p22.setLayout(new FlowLayout());
p22.add(sp);

p2 = new JPanel();
p2.setLayout(new BorderLayout());
p2.add(p21,BorderLayout.NORTH);
p2.add(p22,BorderLayout.CENTER); tp = new JTabbedPane();
tp.addTab("实验",p1);
tp.addTab("记录",p2);

frame = new JFrame();
frame.getContentPane().add(tp);
frame.setSize(350,350);
frame.show();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

bu11.addActionListener(this);
bu21.addActionListener(this);
} public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==bu11) {
String [] list=new String[4];
list[0]=te11.getText().trim();
list[1]=te12.getText().trim();
list[2]=te13.getText().trim();
list[3]=te14.getText().trim();
System.out.println ("bu11");
try {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
String urlStr="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=cjk";
Connection con=DriverManager.getConnection(urlStr,"sa","");
    Statement stat = con.createStatement();
String sqlStr="insert into cjb values('"+list[0]+"','"+list[1]+"','"+list[2]+"','"+list[3]+"')";
System.out.println (sqlStr);

stat.executeUpdate(sqlStr);
con.close();
    }
    catch (Exception ex) {
     ex.printStackTrace();
    }


}
if(ae.getSource()==bu21) {
System.out.println ("bu21");
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    String urlStr = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=cjk";
Connection con = DriverManager.getConnection(urlStr,"sa","");
Statement stat = con.createStatement();
String sqlStr = "select * from cjb";
System.out.println (sqlStr);
ResultSet rs = stat.executeQuery(sqlStr);
while(rs.next()) {
area.append(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)+"\n");
}
con.close();
    }
    catch (Exception ex) {
     ex.printStackTrace();
    }
}
    if(ae.getSource()==bu31){
try {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
     String urlStr = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=cjk";
 Connection con = DriverManager.getConnection(urlStr,"sa","");
 Statement stat = con.createStatement();
 String name=te31.getText();
 String sqlStr="delete from cjb where name='"+name+"'";
 System.out.println (sqlStr);
 stat.executeUpdate(sqlStr);
 con.close();

    }
    catch (Exception ex) {
     ex.printStackTrace();
    }
  }
}
public static void main(String[] args){
new MIS();
}
}

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTabbedPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.data.xy.XYSeries;
    import org.jfree.data.xy.XYSeriesCollection;
    import org.jfree.ui.ApplicationFrame;public class MIS implements ActionListener
    {
    private JFrame frame;
    private JTabbedPane tp;
    private JLabel la11, la12, la13, la14;
    private JTextField te11, te12, te13, te14;
    private JButton bu11, bu12;
    private JPanel p0, p1, p11, p12, p13, p14, p15;
    private JLabel la21;
    private JTextField te21;
    private JButton bu21, bu22;
    private JTextArea area;
    private JScrollPane sp;
    private JPanel p2, p21, p22;
    private JLabel la31;
    private JTextField te31;
    private JButton bu31, bu32;
    private JPanel p3, p31, p32; public MIS()
    {
    la11 = new JLabel("最大力/强度");
    te11 = new JTextField(10);
    p11 = new JPanel();
    p11.setLayout(new FlowLayout());
    p11.add(la11);
    p11.add(te11);
    la12 = new JLabel("上屈服力/强度");
    te12 = new JTextField(10);
    p12 = new JPanel();
    p12.setLayout(new FlowLayout());
    p12.add(la12);
    p12.add(te12);
    la13 = new JLabel("下屈服力/强度 ");
    te13 = new JTextField(10);
    p13 = new JPanel();
    p13.setLayout(new FlowLayout());
    p13.add(la13);
    p13.add(te13);
    la14 = new JLabel("规定非比例延伸力/强度");
    te14 = new JTextField(10);
    p14 = new JPanel();
    p14.setLayout(new FlowLayout());
    p14.add(la14);
    p14.add(te14);
    bu11 = new JButton("确定");
    bu12 = new JButton("清除");
    p15 = new JPanel();
    p15.setLayout(new FlowLayout());
    p15.add(bu11);
    p15.add(bu12);
    p1 = new JPanel();
    p1.setLayout(new GridLayout(0, 1));
    p1.add(p11);
    p1.add(p12);
    p1.add(p13);
    p1.add(p14);
    p1.add(p15);
    p0 = new JPanel();
    p0.setLayout(new BorderLayout());
    p0.add(p1, BorderLayout.WEST);
    la21 = new JLabel("请输入导入文件名");
    te21 = new JTextField(10);
    bu21 = new JButton("确定");
    bu22 = new JButton("清除");
    p21 = new JPanel();
    p21.setLayout(new FlowLayout());
    p21.add(la21);
    p21.add(te21);
    p21.add(bu21);
    p21.add(bu22);
    area = new JTextArea(5, 20);
    sp = new JScrollPane(area, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
    JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    p22 = new JPanel();
    p22.setLayout(new FlowLayout());
    p22.add(sp);
    p2 = new JPanel();
    p2.setLayout(new BorderLayout());
    p2.add(p21, BorderLayout.NORTH);
    p2.add(p22, BorderLayout.CENTER);
    tp = new JTabbedPane();
    tp.addTab("实验", p1);
    tp.addTab("记录", p2);
    frame = new JFrame();
    Container container=frame.getContentPane();
    container.setLayout(new BorderLayout());
    container.add(BorderLayout.NORTH,tp);
    container.add(BorderLayout.SOUTH,new MIS.XYSeriesDemo("XY").chartPanel);
    frame.getContentPane().add(tp);
    frame.setSize(600, 600);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    bu11.addActionListener(this);
    bu21.addActionListener(this);
    }
    public void actionPerformed(ActionEvent ae)
    {
    if (ae.getSource() == bu11)
    {
    String[] list = new String[4];
    list[0] = te11.getText().trim();
    list[1] = te12.getText().trim();
    list[2] = te13.getText().trim();
    list[3] = te14.getText().trim();
    String sqlStr = "insert into cjb values('" + list[0] + "','"
    + list[1] + "','" + list[2] + "','" + list[3] + "')";
    System.out.println(sqlStr);
    }
    if (ae.getSource() == bu21)
    {
    String sqlStr = "select * from cjb";
    System.out.println(sqlStr);
    }
    if (ae.getSource() == bu31)
    {
    String name = te31.getText();
    String sqlStr = "delete from cjb where name='" + name + "'";
    System.out.println(sqlStr);
    }
    }
    public static void main(String[] args)
    {
    new MIS();
    } class XYSeriesDemo extends ApplicationFrame
    {
    ChartPanel chartPanel=null;
    public XYSeriesDemo(final String title)
    {
    super(title);
    final XYSeries series = new XYSeries("负荷—变形曲线");
    series.add(0.0, 0.0);
    series.add(5.0, 6.0);
    series.add(8.0, 10.0);
    series.add(12.5, 18.0);
    series.add(17.3, 18.0);
    series.add(21.2, 19.0);
    series.add(22.9, 100.0);
    series.add(25.6, 100.0);
    series.add(30.0, 10.0);
    final XYSeriesCollection data = new XYSeriesCollection(series);
    final JFreeChart chart = ChartFactory.createXYLineChart(
    "HuaLong Test ", "负荷(N)", "变形1(mm)", data,
    PlotOrientation.VERTICAL, true, true, false);
    final XYPlot plot = (XYPlot) chart.getPlot();
    final NumberAxis axis = (NumberAxis) plot.getRangeAxis();
    axis.setAutoRangeIncludesZero(false);
    axis.setAutoRangeMinimumSize(1.0);
    chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new java.awt.Dimension(300, 300));
    setContentPane(chartPanel);
    }
    }
    }
      

  2.   

    运行上面的MIS。其实就是把一个根据一个Chart构建一个ChartPanel,这个ChartPanel是一个Component,就可以像对待swing中其他Component一样去对待它了
      

  3.   

    其实这是一个很简单的问题啊,添加布局管理器,然后把根据chart构建的ChartPanel添加到布局管理器中去就可以了。