首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

仅使用mousePressed、mouseReleased和mouseDragged在自定义JTable中选择多行

在自定义JTable中选择多行,可以通过使用mousePressed、mouseReleased和mouseDragged这三个鼠标事件来实现。

首先,需要在JTable上注册这三个鼠标事件的监听器。可以通过以下代码实现:

代码语言:txt
复制
table.addMouseListener(new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
        // 处理鼠标按下事件
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // 处理鼠标释放事件
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        // 处理鼠标拖拽事件
    }
});

在mousePressed方法中,可以记录下鼠标按下时的坐标,以及当前选中的行。可以使用JTable的rowAtPoint方法来获取鼠标按下时所在的行,如下所示:

代码语言:txt
复制
int selectedRow = table.rowAtPoint(e.getPoint());

在mouseReleased方法中,可以记录下鼠标释放时的坐标,并根据按下和释放的坐标范围来确定选中的行。可以使用JTable的getSelectionModel方法来获取表格的选择模型,然后使用该选择模型的addSelectionInterval方法来选中一段行,如下所示:

代码语言:txt
复制
int releasedRow = table.rowAtPoint(e.getPoint());
int minRow = Math.min(selectedRow, releasedRow);
int maxRow = Math.max(selectedRow, releasedRow);
table.getSelectionModel().addSelectionInterval(minRow, maxRow);

在mouseDragged方法中,可以根据鼠标拖拽的坐标范围来实时更新选中的行。可以使用JTable的getSelectionModel方法来获取表格的选择模型,然后使用该选择模型的addSelectionInterval和removeSelectionInterval方法来选中或取消选中一段行,如下所示:

代码语言:txt
复制
int draggedRow = table.rowAtPoint(e.getPoint());
int minRow = Math.min(selectedRow, draggedRow);
int maxRow = Math.max(selectedRow, draggedRow);
table.getSelectionModel().addSelectionInterval(minRow, maxRow);
table.getSelectionModel().removeSelectionInterval(minRow, maxRow);

通过以上的鼠标事件处理,就可以实现在自定义JTable中选择多行的功能。

关于JTable的更多信息和使用方法,可以参考腾讯云的产品介绍链接地址:https://cloud.tencent.com/document/product/876/19482

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 如果用java swing编写一个五子棋(人人对战)

    刚学习java,上一次写了一个姓名随机抽取器,点击查看,参加了原力计划,被小编推荐到了首页,也是第一次在首页看到自己写的东西,当时看到的那一刻实实在在很开心,其实我们好多人学习东西,恰恰就需要那么一点点的鼓励和被重视,没错,我就是这类人,通过这次被官方推荐,我的小小内心得到了成就感,被人认可确实是一种美妙的事,所以我又下决心向更有难度的五子棋去挑战,但是由于本人能力有限,所以只写了人人对战,这期间也是遇到了无数的BUG,所以我一直认为编写综合程序,对自己的技术有进一步的提示。在上次写完随机抽取器,有人给我留言,说如果添加了抽取过程中可以显示动态名字就更好,后来我也认真想了想,俗话说,始于颜值,,,颜值即正义,于是在下手码代码前,我有了经验,我用PS认认真真的把我需要的资源都做好了。就是下面这些:

    05

    jTable插件辅助资料

    ==============================================jTable插件================================================ 【】引入jtable <link rel="stylesheet" type="text/css" href="../jtable/themes/lightcolor/blue/jtable.min.css" /> <script type="text/javascript" src="../jtable/jquery.jtable.min.js"></script> <script type="text/javascript" src="../jtable/localization/jquery.jtable.zh-CN.js"></script> 注:jTable插件需要jquery UI插件。之前要引入jQuery和jQueryUI 【】Servlet生成JSON结果 collegeList=collegeBusiness.getListByAll(); //定义数据返回JSON map Map<String, Object> jsonMap = new HashMap<String, Object>(); jsonMap.put("Result", "OK"); jsonMap.put("Records", collegeList); JSONObject result=JSONObject.fromObject(jsonMap); HttpServletResponse response=ServletActionContext.getResponse(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter out=response.getWriter(); out.println(result.toString()); out.flush(); out.close(); 【】jtable要求的返回格式 {  "Result":"OK",  "Records":[   {"PersonId":1,"Name":"Benjamin Button","Age":17,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":2,"Name":"Douglas Adams","Age":42,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":3,"Name":"Isaac Asimov","Age":26,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":4,"Name":"Thomas More","Age":65,"RecordDate":"\/Date(1320259705710)\/"}  ] } 【】当出现异常后的jTable要求的结果 {    "Result":"ERROR",    "Message":"异常信息字符串" } 【】jTable的语法  $('#MyTableContainer').jtable({             //General options comes here             actions: {                 //Action definitions comes here             },             fields: {                 //Field definitions comes here             }             //Event handlers... });      【】jtable初始化 1.定义jTable显示的区域div

    2.在JS中初始化jTable //定义部门表格 $('div#departmentmaincontent').jtable({            title: '部门列表',            selecting: true, //Enable selecting            multiselect: false, //not Allow mu

    04
    领券