目录

1.绘制出带滚动条的JTable表格并填充数据

2.创建一个JPanel用来显示在表格中选中的数据

3.使在选中的表格中的一行下添加新的一行

4.Java代码部分

5.Github仓库地址


1.绘制出带滚动条的JTable表格并填充数据

2.创建一个JPanel用来显示在表格中选中的数据

3.使在选中的表格中的一行下添加新的一行

4.Java代码部分

Main.java

package cn.sk8diao;/*** 作者: 刁旺睿* 时间: 2022/12/6 14:45*/
public class Main {public static void main(String[] args) {Frame frame = new Frame();}
}

Frame.java

package cn.sk8diao;import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;/*** 作者: 刁旺睿* 时间: 2022/12/6 14:45*/
public class Frame extends JFrame {private final String[] columnNames = {"头像", "名字", "被动技能", "定位", "胜率"};private Object[][] rowData = {{new ImageIcon("src/images/Kayle.png"), "正义天使 凯尔", "登神长阶", "战士 辅助", "47.42%"},{new ImageIcon("src/images/Veigar.png"), "邪恶小法师 维迦", "超凡邪力", "法师", "48.07%"},{new ImageIcon("src/images/Seraphine.png"), "星籁歌姬 萨勒芬妮", "星光漫射", "法师 辅助", "48.93%"},{new ImageIcon("src/images/Draven.png"), "荣耀行刑官 德莱文", "德莱文联盟", "射手", "48.97%"},{new ImageIcon("src/images/Jayce.png"), "未来守护者 杰斯", "海克斯科技电容", "战士 射手", "48.3%"},{new ImageIcon("src/images/Ziggs.png"), "爆破鬼才 吉格斯", "一触即发", "法师", "48.97%"},{new ImageIcon("src/images/Lulu.png"), "仙灵女巫 璐璐", "皮克斯,仙灵伙伴", "辅助 法师", "48.99%"},{new ImageIcon("src/images/Pantheon.png"), "不屈之枪 潘森", "矢志不退", "战士 刺客", "46.74%"},{new ImageIcon("src/images/Jax.png"), "武器大师 贾克斯", "无情连打", "战士 刺客", "47.95%"},{new ImageIcon("src/images/Shaco.png"), "恶魔小丑 萨科", "背刺", "刺客", "47%"}};private DefaultTableModel defaultTableModel;private JTable jTable;private JScrollPane jScrollPane;private JLabel jLabel;private JPanel jPanel;private JSplitPane jSplitPane;private JPopupMenu jPopupMenu;private JMenuItem jMenuItem;public Frame() {//初始化图形界面super("JTable By 刁旺睿");//设置窗口标题setSize(800, 600);//设置宽高setLocationRelativeTo(null);//设置居中setDefaultCloseOperation(EXIT_ON_CLOSE);//设置关闭setResizable(false);//设置窗体不可改变大小setLayout(new FlowLayout());//设置布局//创建DefaultTableModeldefaultTableModel = new DefaultTableModel(rowData, columnNames);//创建JTablejTable = new JTable() {@Overridepublic Class<?> getColumnClass(int column) {return getValueAt(0, column).getClass();}};//重写getColumnClass方法来显示图片jTable.setModel(defaultTableModel);jTable.getTableHeader().setFont(new Font("黑体", Font.BOLD, 20));//设置表头字体jTable.setFont(new Font("黑体", Font.PLAIN, 15));//设置表格字体jTable.setRowHeight(60);//设置表格行宽jTable.getColumnModel().getColumn(0).setMaxWidth(60);//设置第一列宽度jTable.getColumnModel().getColumn(0).setMinWidth(60);//设置第一列宽度jTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);//在所有的调整大小操作中,按比例调整所有的列。DefaultTableCellRenderer defaultTableCellRenderer = new DefaultTableCellRenderer();//单元格渲染器defaultTableCellRenderer.setHorizontalAlignment(JLabel.CENTER);//居中显示jTable.setDefaultRenderer(Object.class, defaultTableCellRenderer);//设置渲染器jTable.addMouseListener(new MouseAdapter() {@Overridepublic void mousePressed(MouseEvent e) {if (e.getButton() == 1) {jLabel.setText("<html><body><div align=\"center\">" + "选中的单元格: " +jTable.getValueAt(jTable.getSelectedRow(), jTable.getSelectedColumn()) +"</div><div align=\"center\">" + "选中的行: " +jTable.getValueAt(jTable.getSelectedRow(), 1) +" " + jTable.getValueAt(jTable.getSelectedRow(), 2) +" " + jTable.getValueAt(jTable.getSelectedRow(), 3) +" " + jTable.getValueAt(jTable.getSelectedRow(), 4) +" " + "</div></body></html>");}if (e.getButton() == 3) {if (jTable.getSelectedRow() == -1) {jLabel.setText("请选中行再点击右键");} else {jPopupMenu.show(jTable, e.getX(), e.getY());}}}});//添加选中事件监听器//设置选择模式ListSelectionModel selectionModel = jTable.getSelectionModel();selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//创建JScrollPane并将JTable放入其中jScrollPane = new JScrollPane(jTable, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);//创建JLabeljLabel = new JLabel();jLabel.setHorizontalAlignment(JLabel.CENTER);jLabel.setFont(new Font("黑体", Font.BOLD, 20));//创建JPanejPanel = new JPanel();jPanel.setLayout(new BorderLayout());jPanel.add(jLabel, BorderLayout.CENTER);//添加创建好的JLabel//创建JPopupMenujPopupMenu = new JPopupMenu();//创建JMenuItem并添加到JPopupMenujMenuItem = new JMenuItem("在该行的下方放一只猫咪");jMenuItem.setFont(new Font("黑体", Font.BOLD, 15));jMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.out.println("在" + jTable.getSelectedRow() + "行的下方放一只猫咪");defaultTableModel.insertRow(jTable.getSelectedRow() + 1, new Object[]{new ImageIcon("src/images/Yuumi.png"),"魔法猫咪 悠米","连打带挡","辅助 法师","50.51%"});}});jPopupMenu.add(jMenuItem);//创建分割面板jSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, true, jScrollPane, jPanel);jSplitPane.setEnabled(false);//设置分割线不可移动addComponentListener(new ComponentAdapter() {@Overridepublic void componentResized(ComponentEvent e) {jSplitPane.setDividerLocation(0.7);}});//设置监听器 获取当前窗口大小 按比例分配setContentPane(jSplitPane);setVisible(true);}}

5.Github仓库地址

GitHub - sk8diao/JTable: 面向对象程序设计实验 如何使用JTable来展示数据

面向对象程序设计实验 如何使用JTable来展示数据相关推荐

  1. 面向对象程序设计实验——编写Rational类

    面向对象程序设计实验--编写Rational类 实验任务与要求 代码解析 定义一个命名空间Numeric Rational类的成员变量 编写默认构造函数 编写复制构造函数 编写赋值操作= 分数化简 编 ...

  2. java红牛农场答案_Java面向对象程序设计实验指导与习题解答(21世纪高等学校计算机专业实用规划教材)...

    导语 <Java面向对象程序设计实验指导与习题解答>是<Java面向对象程序设计>(作者耿祥义,清华大学出版社出版,2010)的配套实验指导和习题解答,目的是通过一系列实验练习 ...

  3. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  4. 红牛农场java代码_Java面向对象程序设计实验指导模板代码(171页)-原创力文档...

    PAGE 1 PAGE 24 Java面向对象程序设计实验指导代码 内容简介 本书是<Java面向对象程序设计>的配套实验指导和习题解答.本书的第一部分为16次上机实践的内容,每次上机实践 ...

  5. java面向对象实验结论及心得_20162305 实验二 Java面向对象程序设计 实验报告

    20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...

  6. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  7. java红牛农场答案_Java面向对象程序设计实验指导与习题解答

    第1章 java入门 实验1一个简单的应用程序 实验2教室.教师和学生 实验答案 第2章 基本数据类型 实验1输出特殊偏旁的汉字 实验2输入.输出学生的基本信息 实验3超大整数的加法 实验答案 第3章 ...

  8. 西电软工oop面向对象程序设计实验二上机报告

    实验目的 本次实验通过设计实现几道以自定义函数为主的程序,以熟悉 C++为程序员提供的函数相关机制,加深对命令行参数.参数传递方式.函数形参的特殊形式等知识的感性认识.学会过程式程序设计范型的基本策略 ...

  9. 面向对象程序设计实验 - 实验2 类和对象:类的构建

    实验二 类和对象--类的构建 目录 实验二 类和对象--类的构建 2.1 实验目的 2.2 实验内容 2.2.1程序阅读 2.2.2 程序设计 2.3思考题 2.1 实验目的 1.类的定义: 2.类对 ...

最新文章

  1. 通过类名和窗口名查找指定窗口
  2. linux下redis安装教程,linux下安装配置redis图文详解
  3. mysql凡人入门_3种PHP连接MYSQL数据库的常用方法
  4. java 求交集 算法_Java计算交集,差集,并集的方法示例
  5. Eclipse远程调试HDP源代码
  6. 一个适用各类场合的Makefile模板
  7. 均方根误差RMSE(Root Mean Square Error)
  8. 第21章 java线程(1)-线程初步
  9. 没有tools.jar包的解决办法
  10. 设置SQL Server 2008 以允许远程连接
  11. AD学习之旅(10)— 导入元器件到PCB文件
  12. Unity 正则表达式
  13. 在龙芯3A3000上安装Debian 10
  14. Django(wsgi,middleware,url源码剖析)
  15. raid硬盘速度测试软件,RAID 0模式下固态硬盘性能测试
  16. gmail支持html吗,gmail smtp
  17. 8cm等于多少像素_一寸照片像素是多少
  18. MacBookpro连不上WiFi,网络增加新的位置解决
  19. 阿里开放平台接入——开放平台注册与API调用
  20. 一、26个字母的读音和发音

热门文章

  1. DBSCAN与层次聚类分析
  2. 13-性能测试之JMeter计时器
  3. QQ2004 sp1加密文件结构和加密算法分析
  4. android 的颜色对比表
  5. matplotlib学习之条形图
  6. 安装mysql25步骤_通过yum安装MySQL_5.7.25详细过程
  7. 从永远到永远-我的狼狈的2019
  8. 18.03.28 vijos1071新年趣事之打牌
  9. springboot生成pdf
  10. FIFA21服务器维护,FIFA21网络连接检测功能怎么用 FIFA21网络连接检测功能详解_游侠网...