- 3.代码实现
=====================================================================
-
JTable中有哪些方法
-
如何存放表头
-
如何存放表格体(数据)
-
如何设置表头/表格体的属性(颜色、大小、字体)
-
如何设置字体居中显示
-
如何使表格不可被编辑
=====================================================================
![image-20211114111912875](https://img-blog.csdnimg.cn/img_con
vert/18e424e3a9718a1525bfda77e8661243.png)
=====================================================================
package com.test;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.util.Vector;
public class TableTest extends JFrame {
public TableTest() {
super("测试jTable");
// //定义属性列(表头)
// Vector<String> columns=new Vector<>();
// columns.addElement("编号");
// columns.addElement("姓名");
// columns.addElement("学号");
// columns.addElement("家乡");
//定义一个二维数组作为表格体,存放数据
Vector<Vector<Object>> data = new Vector<>();
Vector<Object> rowVector1 = new Vector<>();
rowVector1.addElement("1");
rowVector1.addElement("张三");
rowVector1.addElement("1");
rowVector1.addElement("湖南");
Vector<Object> rowVector2 = new Vector<>();
rowVector2.addElement("2");
rowVector2.addElement("李四");
rowVector2.addElement("2");
rowVector2.addElement("北京");
Vector<Object> rowVector3 = new Vector<>();
rowVector3.addElement("3");
rowVector3.addElement("王五");
rowVector3.addElement("3");
rowVector3.addElement("上海");
data.addElement(rowVector1);
data.addElement(rowVector2);
data.addElement(rowVector3);
//tableModel:和jTable关联后只需要更新model就能把数据的变化反应到jTable中
// DefaultTableModel tableModel=new DefaultTableModel();
// tableModel.setDataVector(data,columns);//将数据和属性列放到tableModel中
//有了自定义的StudentTableModel,而且再其中封装表头信息
StudentTableModel studentTableModel = StudentTableModel.assembleModel(data);
//jTable和model关联
JTable jTable = new JTable(studentTableModel);
//设置表头的属性(字体,颜色)
JTableHeader tableHeader = jTable.getTableHeader();
tableHeader.setFont(new Font(null, Font.BOLD, 16));
tableHeader.setBackground(Color.pink);
//设置表格体
jTable.setFont(new Font(null, Font.PLAIN, 14));
jTable.setBackground(Color.WHITE);
jTable.setGridColor(Color.BLACK);//设置表格分割线为纯黑色
jTable.setRowHeight(30);//设置行高
//设置是否可以多行选择(默认就是多行选择)
jTable.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
//设置每一列的渲染方式
Vector<String> columns=StudentTableModel.getColumns();//获取每一列
StudentCellRender render =new StudentCellRender();//设置渲染方式
for(int i=0;i<columns.size();i++){
TableColumn column=jTable.getColumn(columns.get(i));
column.setCellRenderer(render);
if(i==0){//设置第一列的宽度
column.setPreferredWidth(30);
column.setResizable(false);//设置第一列的宽度不可改变
}
}
Container contentPane = getContentPane();
/*如果直接把jTable加到contentPane内容面板上,将不会显示属性列(表头)
应该先加到加到JScrollPane上再加到面板上
JTable通常置于一个内部JScrollPane 。
*/
JScrollPane jScrollPane = new JScrollPane(jTable);//
contentPane.add(jScrollPane);
setSize(600, 400);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] main) {
new TableTest();
}
}
/*
为了设置表格体中的数据居中且增加渲染方式,重写getListCellRendererComponent方法
*/
class StudentCellRender extends DefaultTableCellRenderer{
//在每一行的每一列显示之前都会调用
//隔行变色
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (row % 2 == 0) {
setBackground(Color.gray);
}else{
### 最后
**面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典**
* Java核心知识整理
![2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多](https://img-blog.csdnimg.cn/img_convert/6977dbab65e125e665bd5d29407178eb.webp?x-oss-process=image/format,png)
Java核心知识
* Spring全家桶(实战系列)
![2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多](https://img-blog.csdnimg.cn/img_convert/7341c350a067a21edf92292836ef4bdb.webp?x-oss-process=image/format,png)
* 其他电子书资料
![2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多](https://img-blog.csdnimg.cn/img_convert/7846e9aea645ac5bdf5dd15f5b1ecf9d.webp?x-oss-process=image/format,png)
**Step3:刷题**
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
**以下是我私藏的面试题库:**
![2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多](https://img-blog.csdnimg.cn/img_convert/a3ca2667a500176ede7739be602721c4.webp?x-oss-process=image/format,png)
...(img-yPVkmpBV-1723369204665)]
* 其他电子书资料
[外链图片转存中...(img-uVpcAgTM-1723369204665)]
**Step3:刷题**
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
**以下是我私藏的面试题库:**
[外链图片转存中...(img-FGMPKf68-1723369204666)]
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)收录**