Java中元件JTable实例及基础教程
1、JTable 的构造方法很多,可以传入很多参数,一般传入列数,行数,或者model等,来构造一个合适的JTable。也可以传入行索引和列索引。
具体方法如下图
2、JTable的方法也很多,主要设计设定大小、数值、前景色、背景色、可修改或者不可修改。
3、设置单元格的数值方法,一般较为常用。使用行索引和列索引对单元格进行修改。setValueAt(value,row,column)
4、代码如下:
//导入相应的包
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class Show_result extends JFrame{
//创建容器
JPanel jp=new JPanel(new BorderLayout());
//创建滚动条
JScrollPane jsp=new JScrollPane();
//创建表格
JTable jt=new JTable();
//创建列表样式
DefaultTableModel dtm=new DefaultTableModel();
//有参构造方法
public Show_result(String s,String t){
super();
this.setTitle("Show_reslut");
this.setVisible(true);
this.setLocationRelativeTo(this);
this.setSize(800,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new BorderLayout());
jp.setBorder(new EmptyBorder(5,5,5,5));
jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
jsp.setViewportView(jt);
jp.add(jsp,BorderLayout.CENTER);
//设置列索引
int max_col=s.length()>t.length()?s.length():t.length();
String[] s_col=new String[max_col];
for(int i=1;i<=max_col;i++){
s_col[i-1]=i+"";
}
dtm.setColumnIdentifiers(s_col);
dtm.setColumnCount(max_col);
//设置行索引
dtm.setNumRows(2);
//填充元素
for(int i=0;i<s.length();i++){
dtm.setValueAt(s.charAt(i), 0, i);
}
for(int i=0;i<t.length();i++){
dtm.setValueAt(t.charAt(i), 1, i);
}
jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
jt.setModel(dtm);
//设置单元格宽度
for(int i=0;i<s.length();i++){
TableColumn tc=jt.getColumnModel().getColumn(i);
tc.setPreferredWidth(30);
tc.setMaxWidth(30);
tc.setMinWidth(30);
}
//设置单元格背景色
for(int i=1;i<=s_col.length;i++){
if(dtm.getValueAt(0, i-1)=="-"&&dtm.getValueAt(1, i-1)=="-"){
DefaultTableCellRenderer dtcr=new DefaultTableCellRenderer();
TableColumn tc=jt.getColumn(i+"");
dtcr.setBackground(Color.red);
tc.setCellRenderer(dtcr);
}
if(dtm.getValueAt(0, i-1)!="-"||dtm.getValueAt(1, i-1)!="-"){
if(dtm.getValueAt(0, i-1)==dtm.getValueAt(1, i-1)){
DefaultTableCellRenderer dtcr=new DefaultTableCellRenderer();
TableColumn tc=jt.getColumn(i+"");
dtcr.setBackground(Color.green);
tc.setCellRenderer(dtcr);
}else{
DefaultTableCellRenderer dtcr=new DefaultTableCellRenderer();
TableColumn tc=jt.getColumn(i+"");
dtcr.setBackground(Color.yellow);
tc.setCellRenderer(dtcr);
}
}
}
this.setContentPane(jp);
}
}
5、运行结果如下:
6、JTable还继承了以下字段: