【代码笔记】Java连连看项目的实现(1)——JTable 、TableModel的使用
- javax.swing.table.TableModel和javax.swing.JTable
- JTable 、TableModel是Java里面画表格的包。
-
TableModel:为Table提供显示数据、表格维数、表格中显示数据类 型、列标题等Table需要显示的一些属性
-
JTable:提供表格本身的属性和操作,比如表格的样式、行高、背景、行选中属性等
- JTable相当于网页,模特;TableModel相当于服务器,衣服。
- JTable 、TableModel 两者是相互依赖的关系(等于B/S模式)
-
TableModel 服务器的角色,实实在在的数据
-
JTable要展示的东西 TableModel 提供给它,刷新一次就请求一次
-
处理连连看消除逻辑(算法实现):
1)相同图片能够消除
2)在同一行或者同一列无障碍物可消除
3)一个拐点可消除
4)两个拐点可消除
- 连连看项目思路:
- 建好窗体;
- 增加JTable组件
- 增加TableModel组件
- 文件目录:
- TbaleFrame.java
1 package com.edp.impl; 2 3 4 import java.awt.FlowLayout; 5 6 import javax.swing.JFrame; 7 import javax.swing.JTable; 8 9 /** 10 * 11 * @author Administrator 12 * 13 */ 14 @SuppressWarnings("serial") 15 public class TableFrame extends JFrame{ 16 public static void main(String[] args) { 17 new TableFrame().initFrame(); 18 } 19 20 private void initFrame() { 21 this.setSize(800,600); 22 this.setDefaultCloseOperation(3); 23 this.setLayout(new FlowLayout()); 24 //设置窗体不能改变大小 25 this.setResizable(false); 26 this.setLocationRelativeTo(null); 27 28 MyTableModel mtm = new MyTableModel(); 29 JTable table = new JTable(mtm); 30 this.add(table); 31 this.setVisible(true); 32 33 } 34 }
- MyTableModel.java
1 package com.edp.impl; 2 3 import javax.swing.event.TableModelListener; 4 import javax.swing.table.TableModel; 5 6 public class MyTableModel implements TableModel { 7 //获取列类型 8 public Class<?> getColumnClass(int columnIndex) { 9 return String.class; 10 } 11 //获取总行数 12 public int getRowCount() { 13 return 0; 14 } 15 //获取总列数 16 public int getColumnCount() { 17 return 0; 18 } 19 //获取表格列名 20 public String getColumnName(int columnIndex) { 21 return null; 22 } 23 //设置单元格数据 24 public void setValueAt(Object aValue, int rowIndex, int columnIndex) { 25 } 26 //获得单元格数据 27 public Object getValueAt(int rowIndex, int columnIndex) { 28 return 0; 29 } 30 //单元格是否编辑 31 public boolean isCellEditable(int rowIndex, int columnIndex) { 32 return true; 33 } 34 public void removeTableModelListener(TableModelListener l) {} 35 public void addTableModelListener(TableModelListener l) {} 36 }