下面程序的目的是在屏幕上显示当前目录下的文件信息。文件信息通过表格JTable的实例显示。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 import java.awt.*; im

admin2009-12-22  44

问题 下面程序的目的是在屏幕上显示当前目录下的文件信息。文件信息通过表格JTable的实例显示。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。
   注意:不改动程序的结构,不得增行或删行。
   import java.awt.*;
   import javax.swing.*;
   import java.util. Date;
   import javax.swing.table.*;
   import java.applet.*;
   import java.io.*;
   public class Example3_10 extends JApplet, JFrame
   {
       public void init()
       {
              FileModel fm = new FileModel();
              JTable jt = new JTable();
              jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
              jt.setColumnSelectionAllowed(true);
              JScrollPane jsp = new JScrollPane(jt);
              getContentPane().add(jsp, BorderLayout.CENTER);
      }
        
      public static void main(String args[])
      {
              Example3_10 ft = new Example3_10();
              ft.init();
              JFrame f = new JFrame();
              f.setDefaultCloseOperation(JFrame.EXIT ON CLOSE);
              f.getContentPane() .add(ft.getContentPane());
              f.setSize (300,  400);
              f.show();
      }
   }
   class FileModel extends AbstractTableModel
   {
      String[]  columnName = new  String[]  {
          "文件名",  "大小",   "最后修改时间"
      }
      Object[] [] data;
      public FileModel()  { this(".");  }
      public FileModel(String dir)
      {
         File file = new File(dir);
         String files[] = file.list();
                 data = new Object [files.length] [columnName.length];
         for (int i=0; i < files.length; i++)
      {   
                 File tmp = new File (files);
                 data [0]  = tmp.getName();
                         data [1] = new Long(tmp.length());
                         data [2]  = new Date(tmp.lastModified() );
         }
     }
     public int getColumnNumber()
     {
         return columnName.length;
     }
     public int getRowCount()
     {
         return data. length;
     }
     public String getColumnName(int col)
     {
        return columnName[col];
     }
     public Object getValueAt(int row,  int col)
     {
        return data[row] [col];
     }
     public Class getColumnClass(int c)
     {
        return getValueAt (0, c) .getClass();
     }
   }

选项

答案extends JFrame JTable(fm) getColumnCount

解析 本题考查知识点:JTable构件的使用、小应用程序的安全机制解题思路:FileModel定义了一个JTable的模型,在这个模型中,“File file=new File(dir)”语句获得当前目录下的文件信息,然后将这些文件信息存储在模型的“data”变量中。
   Applet的沙箱模型规定,未授权的小应用程序不能访问本地资源,当然也就不能读、写本地计算机的文件系统。本程序需要获得当前目录的信息,因此本题程序只能作为应用程序运行,所以第一处下划线应该去掉JApplet。
   JTable的主要功能是将数据以二维表格的方式显示出来。本题采用的是MVC模式,FileModel实现了表格的模型。第二条下划线处使用JTable的构造方法将模型赋予表格“jt”。
   AbstractTableModel所有的抽象方法都需要实现。第三条下划线处的方法在功能上与抽象方法 getColumnCount()相同,但是并没有实现该抽象方法。因此需要更正。
转载请注明原文地址:https://jikaoti.com/ti/aQb0FFFM
0

最新回复(0)