package test; import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font; import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
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.data.category.DefaultCategoryDataset; public class Test {
static class DemoTableModel extends AbstractTableModel implements TableModel{
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); //按曲线图创建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
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.setValueAt("黄色标题", 0, 0);
jtable.setValueAt("蓝色标题", 1, 0);
jtable.setValueAt("红色标题", 2, 0);
content.add(tablePanel, BorderLayout.SOUTH); //jlp.add(tablePanel,new Integer(50));
//chartPanel.setBounds(100, 100, 100, 100);
//tablePanel.setBounds(50, 50, 100, 100); JFrame jf=new JFrame();
jf.add(content);
//jf.add(jlp);
jf.pack();
jf.setVisible(true);
}
}
我注释掉的地方是想用JLayeredPane 来将2个组件进行重叠布局,然后要求表格要紧挨着曲线图下面(可以覆盖掉年份),然后在Java代码里面将标题颜色改用Font对象实现字体颜色,哪个高手指点一下。
import java.awt.Dimension;
import java.awt.Font; import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
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.data.category.DefaultCategoryDataset; public class Test {
static class DemoTableModel extends AbstractTableModel implements TableModel{
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); //按曲线图创建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
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.setValueAt("黄色标题", 0, 0);
jtable.setValueAt("蓝色标题", 1, 0);
jtable.setValueAt("红色标题", 2, 0);
content.add(tablePanel, BorderLayout.SOUTH); //jlp.add(tablePanel,new Integer(50));
//chartPanel.setBounds(100, 100, 100, 100);
//tablePanel.setBounds(50, 50, 100, 100); JFrame jf=new JFrame();
jf.add(content);
//jf.add(jlp);
jf.pack();
jf.setVisible(true);
}
}
我注释掉的地方是想用JLayeredPane 来将2个组件进行重叠布局,然后要求表格要紧挨着曲线图下面(可以覆盖掉年份),然后在Java代码里面将标题颜色改用Font对象实现字体颜色,哪个高手指点一下。
package test1;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
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.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;public class Test {
static class DemoTableModel extends AbstractTableModel implements
TableModel {
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("", "X", "Y", dgd,
PlotOrientation.VERTICAL, true, true, false);
Font font = new Font("宋体", Font.BOLD, 16);
TextTitle t = new TextTitle("title",font);
t.setPaint(Color.RED);
jfc.setTitle(t);
JLayeredPane jlp=new JLayeredPane();
jlp.setLayout(new BorderLayout());
// 按曲线图创建chartPanel
ChartPanel chartPanel = new ChartPanel(jfc);
chartPanel.setBounds(100, 100, 100, 100); JPanel content = new JPanel(new BorderLayout());
content.add(chartPanel, BorderLayout.CENTER); // 创建table
JTable jtable = getJTable(3, value.length + 1);
JPanel tablePanel = new JPanel(new BorderLayout());
tablePanel.setBounds(50, 50, 100, 100);
tablePanel.setPreferredSize(new Dimension(800, 52));
tablePanel.add(new JScrollPane(jtable));
jtable.setValueAt("黄色标题", 0, 0);
jtable.setValueAt("蓝色标题", 1, 0);
jtable.setValueAt("红色标题", 2, 0);
content.add(tablePanel, BorderLayout.CENTER);
jlp.add(chartPanel,BorderLayout.CENTER);
jlp.add(tablePanel,BorderLayout.SOUTH);
jlp.setSize(850, 500);
JFrame jf = new JFrame();
jf.setLayout(null);
jf.add(jlp);
jf.pack();
jf.setSize(900, 600);
jf.setVisible(true);
}
}