定义自己的表模型,把第三咧,禁止手动编辑,
把第三列的getValueAt,返回列1+列2的值,即可按下回车或跳到其他单元格,第三列就会自动累加前两列import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;public class TableCellRenderTest1
{ public static void main(String[] args)
{ JFrame frame = new TableCellRenderFrame();
frame.show();
}
}
class PlanetTableModel extends AbstractTableModel
{ public String getColumnName(int c)
{ return columnNames[c]; }
public Class getColumnClass(int c)
{ return cells[0][c].getClass(); }
public int getColumnCount()
{ return cells[0].length; }
public int getRowCount()
{ return cells.length; } public Object getValueAt(int r, int c)
{ if(c!=2)
return cells[r][c];
else{
int temp = ((Integer)cells[r][0]).intValue()+((Integer)cells[r][1]).intValue();
return new Integer(temp);
}
} public void setValueAt(Object obj, int r, int c)
{ cells[r][c] = obj; } public boolean isCellEditable(int r, int c)
{ //if you want to edit column 3, you should always return true
return c!=3;
}
private Object[][] cells =
{ { new Integer(1), new Integer(31), new Integer(32)},
{ new Integer(11), new Integer(38), new Integer(49) },
{ new Integer(32), new Integer(46), new Integer(78) },
{ new Integer(44), new Integer(71), new Integer(115) },
}; private String[] columnNames =
{ "N1", "N2", "N1+N2" };
}class TableCellRenderFrame extends JFrame
{
public TableCellRenderFrame()
{ setTitle("TableCellRenderTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
} ); TableModel model = new PlanetTableModel();
JTable table = new JTable(model);
// show table
Container contentPane = getContentPane();
contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
contentPane.add(label, BorderLayout.NORTH);
} }
把第三列的getValueAt,返回列1+列2的值,即可按下回车或跳到其他单元格,第三列就会自动累加前两列import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;public class TableCellRenderTest1
{ public static void main(String[] args)
{ JFrame frame = new TableCellRenderFrame();
frame.show();
}
}
class PlanetTableModel extends AbstractTableModel
{ public String getColumnName(int c)
{ return columnNames[c]; }
public Class getColumnClass(int c)
{ return cells[0][c].getClass(); }
public int getColumnCount()
{ return cells[0].length; }
public int getRowCount()
{ return cells.length; } public Object getValueAt(int r, int c)
{ if(c!=2)
return cells[r][c];
else{
int temp = ((Integer)cells[r][0]).intValue()+((Integer)cells[r][1]).intValue();
return new Integer(temp);
}
} public void setValueAt(Object obj, int r, int c)
{ cells[r][c] = obj; } public boolean isCellEditable(int r, int c)
{ //if you want to edit column 3, you should always return true
return c!=3;
}
private Object[][] cells =
{ { new Integer(1), new Integer(31), new Integer(32)},
{ new Integer(11), new Integer(38), new Integer(49) },
{ new Integer(32), new Integer(46), new Integer(78) },
{ new Integer(44), new Integer(71), new Integer(115) },
}; private String[] columnNames =
{ "N1", "N2", "N1+N2" };
}class TableCellRenderFrame extends JFrame
{
public TableCellRenderFrame()
{ setTitle("TableCellRenderTest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
} ); TableModel model = new PlanetTableModel();
JTable table = new JTable(model);
// show table
Container contentPane = getContentPane();
contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
contentPane.add(label, BorderLayout.NORTH);
} }
解决方案 »
- 关于JAVA停车场管理中的小问题请大神们给个思路~!!!
- java小错误
- 小弟实在是找不出问题出在哪里。。。
- JDBC 连接SQLServer的奇怪问题!!!!难道是微软的BUG?
- 求线程高手解决,总是出现AWT EVENT-0的错误,怎么解决?
- 求教,GUI问题
- ~~~~~~~~~~~~~~~~~救救救救救救救救救救救救救救救救救救救救救救救救救救救救救救救救
- 我想学java需要什么基础?
- 简单,在线给分。。。
- 请问jLabel的文本左右对齐属性设置方法:setHorizontalAlignment(int alignment)是如何取值的?
- jmf到底怎么用,我好迷惘阿,神,阿救救我把
- 请问调用notify后被选中线程的wait是立刻返回,还是等到调用notify的线程退出synchronized块后再返回?
new......}之类然后可以在各个cell中直接输入相关数字或者字符备注(注意,不同的类型)。怎么定议这种JTable模式?