薄情434 2021-06-25 08:01 采纳率: 100%
浏览 56
已采纳

用java做电话号码管理系统

用Jtabel表格做的,想添加一个功能,提取Jtabel 里的值存入文件中,使得在JTable中修改数据文件里的值也随着更改

  • 写回答

1条回答 默认 最新

  • 关注

    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 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口