chart放入panel_将JFreeChart创建的ChartPanel和普通Panel在JLayeredPane上布局

该博客演示了如何将JFreeChart创建的ChartPanel与普通JPanel(包含JTable)在Java的JLayeredPane上进行布局。通过示例代码展示了如何创建线图,隐藏图例,并自定义JTable的单元格颜色。
摘要由CSDN通过智能技术生成

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Component;

import java.awt.Dimension;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.AbstractTableModel;

import javax.swing.table.DefaultTableCellRenderer;

import javax.swing.table.TableCellRenderer;

import javax.swing.table.TableModel;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.ChartPanel;

import org.jfree.chart.JFreeChart;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.chart.title.LegendTitle;

import org.jfree.data.category.DefaultCategoryDataset;

public class Test {

static class DemoTableModel extends AbstractTableModel implements

TableModel {

private static final long serialVersionUID = 1L;

private Object[][] data;

public DemoTableModel(int rows, int column) {

this.data = new Object[rows][column];

}

public int getColumnCount() {

return 16;

}

public int getRowCount() {

return this.data.length;

}

public Object getValueAt(int row, int column) {

return this.data[row][column];

}

public void setValueAt(Object value, int row, int column) {

this.data[row][column] = value;

fireTableDataChanged();

}

public String getColumnName(int column) {

return null;

}

}

public static JTable getJTable(int row, int column) {

DemoTableModel model = new DemoTableModel(row, column);

JTable jtable = new JTable(model);

return jtable;

}

public static void main(String args[]) {

String[] str = new String[16];

for (int i = 1; i < 13; i++) {

str[i - 1] = "08" + (i < 10 ? ("0" + i) : "" + i);

}

str[12] = "0901";

str[13] = "0902";

str[14] = "0903";

str[15] = "0904";

// 折点值

float[] value = new float[16];

for (int i = 0; i < value.length; i++) {

value[i] = i + 2;

}

DefaultCategoryDataset dgd = new DefaultCategoryDataset();

for (int i = 0; i < value.length; i++) {

dgd.addValue(value[i], "2007年", str[i]);

}

JFreeChart jfc = ChartFactory.createLineChart("标题", "", "二", dgd,

PlotOrientation.VERTICAL, true, true, false);

// 取得统计图表的第一个图例

LegendTitle legend = jfc.getLegend(0);

legend.setVisible(false);

// 按曲线图创建chartPanel

ChartPanel chartPanel = new ChartPanel(jfc);

JPanel content = new JPanel(new BorderLayout());

content.add(chartPanel, BorderLayout.CENTER);

// JLayeredPane jlp=new JLayeredPane();

// jlp.add(chartPanel,new Integer(100));

// 创建table

final MyCellRenderer2 mcr = new MyCellRenderer2();

JTable jtable = new JTable(new DemoTableModel(3, value.length + 1)) {

public TableCellRenderer getCellRenderer(int row, int column) {

return mcr;

}

};

// JTable jtable = getJTable(3, value.length + 1);

JPanel tablePanel = new JPanel(new BorderLayout());

tablePanel.setPreferredSize(new Dimension(800, 52));

tablePanel.add(new JScrollPane(jtable));

// jtable.setForeground(Color.RED);

// jtable.setSelectionForeground(Color.RED);

jtable.setValueAt("黄色标题", 0, 0);

jtable.setValueAt("蓝色标题", 1, 0);

jtable.setValueAt("红色标题", 2, 0);

content.add(tablePanel, BorderLayout.SOUTH);

JFrame jf = new JFrame();

jf.add(content);

// jf.add(jlp);

jf.pack();

jf.setVisible(true);

}

}

class MyCellRenderer2 extends DefaultTableCellRenderer {

private static final long serialVersionUID = 1L;

public Component getTableCellRendererComponent(JTable table, Object value,

boolean isSelected, boolean hasFocus, int row, int column) {

Component cell = super.getTableCellRendererComponent(table, value,

isSelected, hasFocus, row, column);

// 指定行的颜色

if (row == 0)

cell.setForeground(Color.YELLOW);

if (row == 2)

cell.setForeground(Color.BLUE);

if (row == 1)

cell.setForeground(Color.RED);

return cell;

}

}

已经满足楼主的要求,我已经调试通过!

2009年8月24日 16:20

967

0

0

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值