Swing中经常会遇到的若干问题——JTable(持续更新)
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/40955213
(1)让组件在屏幕中央显示
public static void setContainerCenter(Container container) { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); int screenWidth = screenSize.width; int screenHight = screenSize.height; container.setLocation((screenWidth - container.getWidth()) / 2, (screenHight - container.getHeight()) / 2); }
(2)隐藏Jtable中的某一列
public static void hideColByLocation(int col, JTable table){ DefaultTableColumnModel dcm = (DefaultTableColumnModel) table.getColumnModel(); dcm.getColumn(col).setPreferredWidth(0); dcm.getColumn(col).setMaxWidth(0); dcm.getColumn(col).setMinWidth(0); }
(3)Jtable中定位到当前新增加的行
public static void focusCurrentRow(JTable table, List<Object> objs) { int last = objs.size() - 1; table.setRowSelectionInterval(last, last); table.changeSelection(last, 0, false, false); }
(4)Jtable中行的上移、下移操作
public static void eventOnMoveUpOrDowmBySelectedRow(JTable table, String str, List<String> nameList) { int[] selectedRows = table.getSelectedRows(); for (int i = 0; i < selectedRows.length - 1; i++) { if(selectedRows[i + 1] - selectedRows[i] != 1){ return; } } List<String> swapSelectedList = null; if ("上移".equals(str)) { if(selectedRows.length == 1){ swapSelectedList = swap(nameList, selectedRows[0], selectedRows[0] - 1); setNameListAndModel(swapSelectedList, table); table.getSelectionModel().setSelectionInterval(selectedRows[0] - 1, selectedRows[0] - 1); }else{ swapSelectedList = swapUp(nameList, selectedRows); setNameListAndModel(swapSelectedList, table); table.getSelectionModel().setSelectionInterval(selectedRows[0]-1, selectedRows[selectedRows.length-1]-1); } } else if ("下移".equals(str)) { if(selectedRows.length == 1){ swapSelectedList = swap(nameList, selectedRows[0], selectedRows[0] + 1); setNameListAndModel(swapSelectedList, table); table.getSelectionModel().setSelectionInterval(selectedRows[0] + 1, selectedRows[0] + 1); }else{ swapSelectedList = swapDown(nameList, selectedRows); setNameListAndModel(swapSelectedList, table); table.getSelectionModel().setSelectionInterval(selectedRows[0]+1, selectedRows[selectedRows.length-1]+1); } } } /** * {方法功能中文描述}上移多行 */ private static List<String> swapUp(List<String> list, int[] selectedRows) { if (selectedRows.length >= list.size() || selectedRows.length == 0 || selectedRows[0] == 0) { return list; } else { String obj = list.get(selectedRows[0] - 1); for (int pos : selectedRows) { list.set(pos - 1, list.get(pos)); } list.set(selectedRows[0] + selectedRows.length - 1 , obj); return list; } } /** * {方法功能中文描述}下移多行 */ private static List<String> swapDown(List<String> list, int[] selectedRows) { if (selectedRows.length >= list.size() || selectedRows.length == 0 || selectedRows[selectedRows.length-1] == list.size()-1) { return list; } else { String obj = list.get(selectedRows[selectedRows.length-1] + 1); for (int i = selectedRows.length-1; i >= 0; i--) { list.set(selectedRows[i] + 1, list.get(selectedRows[i])); } list.set(selectedRows[0] , obj); return list; } } /** * {方法功能中文描述} 交换两行的位置 */ private static List<String> swap(List<String> list, int fromRow, int toRow) { if (toRow >= list.size() || toRow < 0) { return list; } else { String obj = list.get(fromRow); list.set(fromRow, list.get(toRow)); list.set(toRow, obj); return list; } } private static void setNameListAndModel(List<String> NameList, JTable table) { /**重新设置model中数据**/ table.getModel().setNames(NameList); /**数据变化**/ table.getModel().fireTableDataChanged(); table.setModel(uiModel); }
(5)打开面板选中Jtree第一个节点并展开
public static void setFirstNode2Selected(DefaultTreeModel model,JPanel panel, JTree currTree){ /**通过树根获取其第一个孩子**/ TreeNode firstChild = (TbTreeNode) ((DefaultMutableTreeNode)panel.getLeftContentPanel().getTreeModel().getRoot()).getFirstChild(); Object userObject = firstChild.getUserObject(); /**通过VO获取Node对象**/ TreeNode childnode = panel.getTreeModel().getNodeByVo(userObject); if(childnode!=null){ childnode.setCanBeSelected(true); /**设置可被选中**/ childnode.setSelectState(TreeNode.SELECTED); /**设置被选中**/ } /**设置选中的路径状态**/ currTree.getSelectionModel().setSelectionPath(new TreePath(childnode.getPath())); }
(6)JTable行的多种选择模式
setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); //一次选择一个或多个连续的索引范围。 setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); //一次选择一个连续的索引范围。 setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //一次选择一个列表索引。
(7)JTable不可编辑
调用AbstractTableModel中的setWriteable()方法,true为可以编辑,false为不可编辑
(8)JTable中数据发生变化时
调用AbstractTableModel中 fireTableDataChanged()方法进行处理
(9)JTable显示设置
//设置列名称 private static final String[] colNames = new String[] { "A", "B", "C", "D"}; //设置列名称显示 public String getColumnName(int column) { return colNames[column]; } //设置列数目 public int getColumnCount() { return colNames.length; } //是否可编辑 public boolean isCellEditable(int rowIndex, int columnIndex) { if(!isWriteable){ return false; } if(isWriteable){ //设置第二列可以编辑 if(columnIndex == 1){ return true; } } return false; } //填充数据模型 public Object getValueAt(int rowIndex, int columnIndex) { //假设从某一list中获取数据对象,遍历该list if (list != null && list.size() > 0) { for (int i = 0;i< list.size(); i++) { switch (columnIndex) { case 0: return ""; //返回值自行设定 case 1: return ""; case 2: return ""; case 3: return ""; case 4: return ""; } } } return null; } //修改表中数据时 public void setValueAt(Object aValue, int rowIndex, int columnIndex) { if(columnIndex == 1){ //操作... } }
Swing中经常会遇到的若干问题——JTable(持续更新)的更多相关文章
- java开发中遇到的问题及解决方法(持续更新)
摘自 http://blog.csdn.net/pony12/article/details/38456261 java开发中遇到的问题及解决方法(持续更新) 工作中,以C/C++开发为主,难免与其他 ...
- 一些JavaSE学习过程中的思路整理(主观性强,持续更新中...)
目录 一些JavaSE学习过程中的思路整理(主观性强,持续更新中...) Java书写规范 IDEA的一些常用快捷键 Java类中作为成员变量的类 Java源文件中只能有一个public类 Java中 ...
- 关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】
最近一直用ASP.NET MVC 4.0 +LINQ TO SQL来开发设计公司内部多个业务系统网站,在这其中发现了一些问题,也花了不少时间来查找相关资料或请教高人,最终都还算解决了,现在我将这些问题 ...
- Android开发中Eclispe相关问题及相应解决(持续更新)
1.Eclipse项目中的Android Private Libraries没有自动生成. 一般而言,在Android开发中,项目中引用到的jar包会放到项目目录中的libs中,引入库会放到Andro ...
- android及IOS的测试中容易疏漏或者测漏的点——持续更新
1.控件的生命周期——控件消隐之后,会不会依然可点,导致出现进一步的响应?这个之前没想过,之后需要加入到测试点中 2.在登录界面同时出现弹窗: 如:特殊情况下,同时出现弹窗,又刚好退出登录,因此登录界 ...
- web开发中兼容性问题(IE8以上含)持续更新~~
在实际开发中总是遇到莫名其妙的问题~~~那么就记录下来这些问题,对这些问题进行一个总结. 1.事件对象 1)事件参数e,就是事件对象,标准的获取方式 2)e.eventPhase 事件阶段,IE8以前 ...
- 你必须知道的----C语言笔试面试中经典易错的一些知识点(持续更新)
1. 关于二级指针的解析和引用 1.1 二级指针意义 二级指针存放的是一级指针的地址 Ex: Int a = ; Int *p = &a; Int **q = &p; 1.2 ...
- http协议中到底都有什么内容?【持续更新】
http协议中到底都会传输我电脑上的啥东西呢?主机名,账号密码? 没有主机名,有你这台主机的操作系统...也就是说他们会知道你的操作系统.....
- 安卓中经常使用控件遇到问题解决方法(持续更新和发现篇幅)(在textview上加一条线、待续)
TextView设置最多显示30个字符.超过部分显示...(省略号),有人说分别设置TextView的android:signature="true",而且设置android:el ...
随机推荐
- 使用RestTemplate访问restful服务时遇到的问题
可以通过通过wireshark抓包,使用Postman发送请求 wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必 ...
- day06 Request Response
rw 读写模板的设置 day05 Request Response 1. HttpServletResponse 简介 1.1 Response 的 OutputStream 输出中文的问题 1.2 ...
- 解决警告: Setting property 'source' to 'org.eclipse.jst.jee.server_:' did not find a matching property.的方法
今天第一次搭建struts2框架,跟着网上的教程导入对应的jar包之后就开始写登录的jsp页面,但是运行时出现了问题, 浏览器显示"The requested resource is not ...
- UMAIL安装教程
UMAIL安装教程 一.UMAIL虚拟机的创建与安装 首先在VM中选择新建虚拟机 选择下一步 选择稍后安装操作系统 选择Linux系统 版本CentOS 7 64位 选择名称与安装位置 选择下一步 选 ...
- 重载equals方法时要遵守的通用约定--自反性,对称性,传递性,一致性,非空性
本文涉及到的概念 1.为什么重载equals方法时,要遵守通用约定 2.重载equals方法时,要遵守哪些通用约定 为什么重载equals方法时,要遵守通用约定 Object类的非final方法都 ...
- 安卓图片Bitmap一些旋转处理
Bitmap convert(Bitmap a, int width, int height) { int w = a.getWidth(); int h = a.getHeight(); Bitma ...
- Android开发学习之路--Java和Js互相调用
随着前端的火热,以前开发的快速,越来越多的native app在其中融合了h5,就拿淘宝就是很多的h5组成的,一旦出现什么节日,他都可以不用通过更新app来实现界面的改变,而且android和io ...
- Sublime Text 3下C/C++开发环境搭建
Sublime Text 3下C/C++开发环境搭建 之前在Linux Mint 17一周使用体验中简单介绍过Sublime Text. 1.Sublime Text 3安装 Ubuntu.Linux ...
- App安全(一) Android防止升级过程被劫持和换包
文/ Tamic 地址/ http://blog.csdn.net/sk719887916/article/details/52233112 前言 APP 安全一直是开发者头痛的事情,越来越多的安全漏 ...
- VBA find方法
Sub Sample() Dim sfzs As New Collection Dim ws, wbs, dbs As Worksheet Dim r As Long Set ws = ThisWor ...