如何修改表头的title

jekencao 2007-06-10 04:52:41
下边是一个合并单元格的例子,但运行后显示的标题是"A B C"...该怎么修改这几个值呢?搞了一天也没弄出来,请大家帮忙.谢谢了!

import javax.swing.table.*;
import javax.swing.plaf.basic.*;
import java.awt.*;
import javax.swing.*;

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

interface CMap
{
int span (int row, int column);
int visibleCell(int row, int column);
}

class CTable extends JTable {
public CMap map;
public CTable(CMap cmp, TableModel tbl) {
super(tbl);
map=cmp;
setUI(new CTUI());
}
public Rectangle getCellRect(int row, int column, boolean includeSpacing){

if (map==null) return super.getCellRect(row,column, includeSpacing);

int sk=map.visibleCell(row,column);
Rectangle r1=super.getCellRect(row,sk,includeSpacing);

if (map.span(row,sk)!=0)
for (int i=1; i<map.span(row,sk); i++){
r1.width+=getColumnModel().getColumn(sk+i).getWidth();
}
return r1;
}

Point s=new Point(1,1);

public int columnAtPoint(Point p) {
int x=super.columnAtPoint(p);
if (x<0) return x;
int y=super.rowAtPoint(p);
return map.visibleCell(y,x);
}
}


class CTUI extends BasicTableUI
{
public void paint(Graphics g, JComponent c) {
Rectangle r=g.getClipBounds();
int firstRow=table.rowAtPoint(new Point(0,r.y));
int lastRow=table.rowAtPoint(new Point(0,r.y+r.height));

if (lastRow<0)
lastRow=table.getRowCount()-1;

for (int i=firstRow; i<=lastRow; i++)
paintRow(i,g);
}
private void paintRow(int row, Graphics g)
{
Rectangle r=g.getClipBounds();
for (int i=0; i<table.getColumnCount();i++)
{
Rectangle r1=table.getCellRect(row,i,true);
if (r1.intersects(r))
{
int sk=((CTable)table).map.visibleCell(row,i);
paintCell(row,sk,g,r1);
i+=((CTable)table).map.span(row,sk)-1;
}
}
}
private void paintCell(int row, int column, Graphics g,Rectangle area)
{
int verticalMargin = table.getRowMargin();
int horizontalMargin = table.getColumnModel().getColumnMargin();

Color c = g.getColor();
g.setColor(table.getGridColor());
g.drawRect(area.x,area.y,area.width,area.height);
g.setColor(c);

area.setBounds(area.x + horizontalMargin/2, area.y + verticalMargin/2, area.width - horizontalMargin, area.height - verticalMargin);

if (table.isEditing() && table.getEditingRow()==row && table.getEditingColumn()==column)
{
Component component = table.getEditorComponent();
component.setBounds(area);
component.validate();

}
else
{
TableCellRenderer renderer = table.getCellRenderer(row, column);
Component component = table.prepareRenderer(renderer, row, column);
System.out.println(table.getRowCount());
if (component.getParent() == null)
{
rendererPane.add(component);
}
rendererPane.paintComponent(g, component, table, area.x, area.y,area.width, area.height, true);
}
}
}

class CMaps implements CMap
{
public int span(int row, int column) {
if ((row==0) &&(column==0)) return 3;
if ((row==2)&& (column==0)) return 3;
if ((row==9)&&(column==5)) return 3;
return 1;
}
public int visibleCell(int row, int column) {
if ((row==0)&& (column>=3)&&(column<9))
return 3;
if ((row==4)&&(column>=7)&&(column <9))
return 7;
if ((row==9)&&(column>=5)&&(column<8))
return 5;
return column;
}
}

public class test
{
public static void main(String args[])
{
JFrame jf=new JFrame("Table with cell spanning");

CMap m=new CMaps();

DefaultTableModel tm=new DefaultTableModel(30,3);
String[] title_name={"Data","Value",""};
JTable table=new JTable(tm);

jf.getContentPane().add(new JScrollPane(new CTable(m,tm)));
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
jf.setSize(500,500);
jf.show();
}
}
...全文
608 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jekencao 2007-06-11
  • 打赏
  • 举报
回复
多谢!
insiku 2007-06-10
  • 打赏
  • 举报
回复
public class Test
{
public static void main(String args[])
{
JFrame jf=new JFrame("Table with cell spanning");

CMap m=new CMaps();

DefaultTableModel tm=new DefaultTableModel(30,3);
String[] title_name={"Data","Value",""};
tm.setColumnIdentifiers(title_name);
JTable table=new JTable(tm);

jf.getContentPane().add(new JScrollPane(new CTable(m,tm)));
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
jf.setSize(500,500);
jf.show();
}
}
jekencao 2007-06-10
  • 打赏
  • 举报
回复
就是把标题改成 title_name={"Data","Value",""};

62,614

社区成员

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

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