请教将JFreechar嵌入GUI

wangyang3092 2006-11-23 10:38:01
我做了一个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();
}
}
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rehte 2006-11-23
  • 打赏
  • 举报
回复
太长了,懒得看
imA 2006-11-23
  • 打赏
  • 举报
回复
其实这是一个很简单的问题啊,添加布局管理器,然后把根据chart构建的ChartPanel添加到布局管理器中去就可以了。
imA 2006-11-23
  • 打赏
  • 举报
回复
运行上面的MIS。

其实就是把一个根据一个Chart构建一个ChartPanel,这个ChartPanel是一个Component,就可以像对待swing中其他Component一样去对待它了
imA 2006-11-23
  • 打赏
  • 举报
回复
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);
}
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧