java 中JTable的详解

很久没有上来了,今天在写JTable的小示例,发现了不少小技巧,记录在此。
仅自己日后学习,也希望能给需要的朋友带来一点小帮助!
学习写图形化界面,个人认为按照下面几个步骤来写就OK了!
(1)引入Swing包
(2)选择“外观和感觉”
(3)设置顶层容器
(4)设置按钮和标签
(5)向容器中添加组件
(6)在组件周围添加边界
(7)进行事件处理
那么来看看我写的这个小例子吧 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Container; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.AbstractTableModel; 

/** 
* 表格示例,主要是演示 使用表格模型提供数据 
* @author JingKang 
*/ 
public class TestJTable extends JFrame{ 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
private MyTable mt ; 
private JTable table ; 
private JScrollPane sc; 
private Container cn ; 
private JLabel lblStatus ; 
private JPanel pStatus ; 

public TestJTable(){ 
super("简单表格"); 
init() ; 
} 

private void init(){ 
cn = getContentPane(); 
mt = new MyTable(); 
table=new JTable(mt) ; 
//设置此表视口的首选大小。 
table.setPreferredScrollableViewportSize(new Dimension(400,80)); 
//单元格之间间距的高度和宽度 
table.setIntercellSpacing(new Dimension(1,1)); 
table.setGridColor(Color.RED); 
table.setForeground(Color.BLUE); 

table.setAutoCreateRowSorter(true); 

sc=new JScrollPane(table) ; 
cn.setLayout(new BorderLayout()); 
cn.add(sc,BorderLayout.CENTER); 

lblStatus=new JLabel("选择单元格为:"); 
pStatus=new JPanel(new FlowLayout()); 
pStatus.add(lblStatus,FlowLayout.LEFT); 

cn.add(pStatus,BorderLayout.SOUTH); 

this.setVisible(true); 
this.pack(); 
this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
} 

public static void main(String[] args) { 
new TestJTable(); 
} 
} 

class MyTable extends AbstractTableModel{ 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

private String[] columns  ={"姓名","性别","住址"}; 

private Object[][] datas = { 
{"小龙","男","长沙市"}, 
{"小花","女","北京市"} 
}; 

@Override 
public int getColumnCount() { 
return columns.length; 
} 

@Override 
public int getRowCount() { 
return datas.length; 
} 

/** 
* 功能:将获得单元格的内容显示在面板上 
*/ 
@Override 
public Object getValueAt(int rowIndex, int columnIndex) { 
return datas[rowIndex][columnIndex]; 
} 

/** 
* 获得单元格的列名 
*/ 
@Override 
public String getColumnName(int col){ 
return columns[col]; 
} 

/** 
* 功能:设定单元格为可编辑 
*/ 
@Override 
public boolean isCellEditable(int rowIndex,int colIndex){ 
return true ; 
} 

/** 
* 功能:将用户修改后的值赋给指定的单元格 
*/ 
@Override 
public void setValueAt(Object aValue, int rowIndex, int columnIndex){ 
datas[rowIndex][columnIndex]=aValue ; 
} 
}

  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值