用Jtabel表格做的,想添加一个功能,提取Jtabel 里的值存入文件中,使得在JTable中修改数据文件里的值也随着更改
1条回答 默认 最新
- CSDN专家-赖老师(软件之家) 2021-06-25 08:06关注
1.定义一个电话号码的javabean, 2.用JFrame实现界面,用JTable显示数据; 3.把数据保存在List对象; 4.用ObjectOutputStream保存对象。 参考代码:
<span class="hljs-keyword">package</span> T10; <span class="hljs-keyword">import</span> javax.swing.JFrame; <span class="hljs-keyword">import</span> javax.swing.JPanel; <span class="hljs-keyword">import</span> javax.swing.JScrollPane; <span class="hljs-keyword">import</span> javax.swing.JTable; <span class="hljs-keyword">import</span> javax.swing.table.AbstractTableModel; <span class="hljs-keyword">import</span> java.awt.Dimension; <span class="hljs-keyword">import</span> java.awt.GridLayout; <span class="hljs-keyword">import</span> java.util.Vector; <span class="hljs-keyword">import</span> javax.swing.table.JTableHeader; <span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">TableDemo</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_">JFrame</span> { <span class="hljs-comment">/** * 表格(JTable):主要功能是显示数据 * * */</span> <span class="hljs-keyword">public</span> <span class="hljs-title function_">TableDemo</span><span class="hljs-params">()</span> { <span class="hljs-built_in">super</span>(<span class="hljs-string">"表格例子"</span>); <span class="hljs-comment">//设置该面板为网格布局</span> <span class="hljs-built_in">this</span>.getContentPane().setLayout(<span class="hljs-keyword">new</span> <span class="hljs-title class_">GridLayout</span>(<span class="hljs-number">1</span>, <span class="hljs-number">0</span>)); <span class="hljs-comment">//使用改写后的tableModel类来创建一个表格</span> <span class="hljs-type">JTable</span> <span class="hljs-variable">table</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">JTable</span>(<span class="hljs-keyword">new</span> <span class="hljs-title class_">MyTableModel</span>()); <span class="hljs-comment">//设置单元格选中为真</span> <span class="hljs-comment">// table.setCellSelectionEnabled(true);</span> <span class="hljs-comment">//允许选中行</span> table.setRowSelectionAllowed(<span class="hljs-literal">true</span>); <span class="hljs-comment">//获取表头</span> <span class="hljs-type">JTableHeader</span> <span class="hljs-variable">th</span> <span class="hljs-operator">=</span> table.getTableHeader(); th.setReorderingAllowed(<span class="hljs-literal">false</span>); <span class="hljs-comment">// th.setReorderingAllowed(true);</span> <span class="hljs-comment">//系统自动设置表格的大小</span> <span class="hljs-comment">// table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);</span> <span class="hljs-comment">//设置表格的默认显示大小</span> table.setPreferredScrollableViewportSize(<span class="hljs-keyword">new</span> <span class="hljs-title class_">Dimension</span>(<span class="hljs-number">500</span>, <span class="hljs-number">70</span>)); <span class="hljs-comment">//将该表格放到一个滚动面板中去</span> <span class="hljs-type">JScrollPane</span> <span class="hljs-variable">scrollPane</span> <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">JScrollPane</span>(table); <span class="hljs-comment">//将该滚动面板再加入到内容面板中去</span> <span class="hljs-built_in">this</span>.add(scrollPane); <span class="hljs-built_in">this</span>.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); <span class="hljs-built_in">this</span>.pack(); <span class="hljs-built_in">this</span>.setVisible(<span class="hljs-literal">true</span>); } <span class="hljs-comment">//内部类实现抽象的TableModel,并改写必要的方法</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">MyTableModel</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_">AbstractTableModel</span> { <span class="hljs-comment">//表头的标题</span> <span class="hljs-keyword">private</span> String[] columnNames = {<span class="hljs-string">"姓名"</span>, <span class="hljs-string">"年龄"</span>, <span class="hljs-string">"成绩"</span>, <span class="hljs-string">"作弊"</span>,<span class="hljs-string">"学期"</span>}; <span class="hljs-comment">//表格中显示的记录</span> <span class="hljs-keyword">private</span> Object[][] data = { {<span class="hljs-string">"笨笨"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Integer</span>(<span class="hljs-number">12</span>), <span class="hljs-string">"85"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Boolean</span>(<span class="hljs-literal">false</span>),<span class="hljs-string">"第1学期"</span>}, {<span class="hljs-string">"张山"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Integer</span>(<span class="hljs-number">13</span>), <span class="hljs-string">"70"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Boolean</span>(<span class="hljs-literal">true</span>),<span class="hljs-string">"第1学期"</span>}, {<span class="hljs-string">"李飞"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Integer</span>(<span class="hljs-number">12</span>), <span class="hljs-string">"75"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Boolean</span>(<span class="hljs-literal">false</span>),<span class="hljs-string">"第1学期"</span>}, {<span class="hljs-string">"关羽"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Integer</span>(<span class="hljs-number">11</span>), <span class="hljs-string">"60"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Boolean</span>(<span class="hljs-literal">true</span>),<span class="hljs-string">"第1学期"</span>}, {<span class="hljs-string">"大雄"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Integer</span>(<span class="hljs-number">14</span>), <span class="hljs-string">"50"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Boolean</span>(<span class="hljs-literal">false</span>),<span class="hljs-string">"第1学期"</span>}, {<span class="hljs-string">"萧萧"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Integer</span>(<span class="hljs-number">13</span>), <span class="hljs-string">"83"</span>, <span class="hljs-keyword">new</span> <span class="hljs-title class_">Boolean</span>(<span class="hljs-literal">false</span>),<span class="hljs-string">"第1学期"</span>} }; <span class="hljs-comment">//得到表格列长度</span> <span class="hljs-keyword">public</span> <span class="hljs-type">int</span> <span class="hljs-title function_">getColumnCount</span><span class="hljs-params">()</span> { <span class="hljs-keyword">return</span> columnNames.length; } <span class="hljs-comment">//得到表格行数</span> <span class="hljs-keyword">public</span> <span class="hljs-type">int</span> <span class="hljs-title function_">getRowCount</span><span class="hljs-params">()</span> { <span class="hljs-keyword">return</span> data.length; } <span class="hljs-comment">//得到表格列名</span> <span class="hljs-keyword">public</span> String <span class="hljs-title function_">getColumnName</span><span class="hljs-params">(<span class="hljs-type">int</span> col)</span> { System.out.println(<span class="hljs-string">" 该列的列名为:"</span>+columnNames[col]); <span class="hljs-keyword">return</span> columnNames[col]; } <span class="hljs-comment">//得到指定单元的值</span> <span class="hljs-keyword">public</span> Object <span class="hljs-title function_">getValueAt</span><span class="hljs-params">(<span class="hljs-type">int</span> row, <span class="hljs-type">int</span> col)</span> { System.out.println(<span class="hljs-string">" 该单元的值为data["</span>+row+<span class="hljs-string">"]["</span>+col+<span class="hljs-string">"] :"</span>+data[row][col]); <span class="hljs-keyword">return</span> data[row][col]; } <span class="hljs-comment">//返回指定列的数据类型,不需要调用</span> <span class="hljs-keyword">public</span> Class <span class="hljs-title function_">getColumnClass</span><span class="hljs-params">(<span class="hljs-type">int</span> c)</span> { <span class="hljs-keyword">return</span> getValueAt(<span class="hljs-number">0</span>, c).getClass(); } <span class="hljs-comment">//设置单元格是否可修改,系统自动执行</span> <span class="hljs-keyword">public</span> <span class="hljs-type">boolean</span> <span class="hljs-title function_">isCellEditable</span><span class="hljs-params">(<span class="hljs-type">int</span> row, <span class="hljs-type">int</span> col)</span> { <span class="hljs-keyword">if</span> (col < <span class="hljs-number">2</span>) { <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>; <span class="hljs-comment">//不能修改</span> } <span class="hljs-keyword">else</span> { <span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>; <span class="hljs-comment">//可以修改</span> } } <span class="hljs-comment">//设置单元格的值,不需要调用,系统自动赋值</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">setValueAt</span><span class="hljs-params">(Object value, <span class="hljs-type">int</span> row, <span class="hljs-type">int</span> col)</span> { data[row][col] = value; <span class="hljs-comment">//更新界面</span> fireTableCellUpdated(row, col); } } <span class="hljs-comment">//让该表格在线程安全模式下运行</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">main</span><span class="hljs-params">(String[] args)</span> { javax.swing.SwingUtilities.invokeLater(<span class="hljs-keyword">new</span> <span class="hljs-title class_">Runnable</span>() { <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title function_">run</span><span class="hljs-params">()</span> { <span class="hljs-keyword">new</span> <span class="hljs-title class_">TableDemo</span>(); } }); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 stm32开发clion时遇到的编译问题
- ¥15 lna设计 源简并电感型共源放大器
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
- ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
- ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
- ¥15 帮我写一个c++工程