资源管理器2

Jun 07, 2016 pm 03:43 PM
package マネージャー リソース

package org.accp.explor; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce

ログイン後にコピー

 

package org.accp.explor;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.sql.Date;

import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;

public class Test1 extends DefaultMutableTreeNode {

 
 private static final long serialVersionUID = 6999685634761062308L;

 private class MyFile {//这个内部类的用处在于在JTree节点的select发生时,对所选文件进行格式转化
  private File file;

  public MyFile(File file) {
   this.file = file;
  }

  public String toString() {
   String name = file.getName().trim();
   if (name.length() == 0)
    name = file.getAbsolutePath().trim();
   return name;
  }

 }

 

 DefaultMutableTreeNode treeRoot;

 DefaultTableModel tableModel;

 JTable table;

 DefaultMutableTreeNode parent;

 Object[][] list = { {} };

 

 public void treeMake() throws UnknownHostException { // 添加机器码&&构造界面
  InetAddress local = InetAddress.getLocalHost();
  treeRoot = new DefaultMutableTreeNode(local.getHostName());
  final JTree tree = new JTree(treeRoot);
  JScrollPane scrolltree = new JScrollPane(tree);
  scrolltree.setPreferredSize(new Dimension(200, 300));

  String[] row = { "文件", "类型", "最后修改日期" };

  tableModel = new DefaultTableModel(list, row);
  table = new JTable(tableModel);
  JScrollPane scrollTable = new JScrollPane(table);
  scrollTable.setPreferredSize(new Dimension(500, 500));
 
  MenuBar meb=new MenuBar();
 Menu menuFile=new Menu("文件(F)");
 Menu menuEdit=new Menu("编辑(E)");
 Menu menuLook=new Menu("查看(V)");
 
 meb.add(menuFile);
 MenuItem miFile=new MenuItem("打开");
 menuFile.add(miFile);
 meb.add(menuEdit);
 MenuItem miEdit=new MenuItem("复制");
 menuEdit.add(miEdit);
 meb.add(menuLook);
 MenuItem miLook=new MenuItem("工具栏");
 menuLook.add(miLook);
 
  JFrame jf = new JFrame();
  jf.add(BorderLayout.WEST, scrolltree);
  jf.add(BorderLayout.CENTER, scrollTable);
  jf.setSize(600, 600);
  jf.setVisible(true);
  jf.setMenuBar(meb);
  jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  // 添加电脑本地硬盘
  for (char i = 'c'; i    String path = i + ":/";
   if (((new File(path)).exists())) {
    DefaultMutableTreeNode diskNode = new DefaultMutableTreeNode(
      new MyFile(new File(path)));
    treeRoot.add(diskNode);
    readfiles(new File(path), diskNode);
   }
  }

  tree.addTreeSelectionListener(new TreeSelectionListener() {//添加listener
   public void valueChanged(TreeSelectionEvent arg0) {
    // TODO 自动生成方法存根

    TreePath path = tree.getSelectionPath();
    if (path == null)
     return;
    DefaultMutableTreeNode selectnode = (DefaultMutableTreeNode) path
      .getLastPathComponent();

    if (!selectnode.isLeaf()) {
     // 这里加上类型判断
     if (!(selectnode.getUserObject() instanceof MyFile)) {
      return;
     }
     File file_select = ((MyFile) selectnode.getUserObject()).file;
     // 读取文件夹下文件添加下层节点
     readfiles(file_select, selectnode);
     DefaultMutableTreeNode firstchild = (DefaultMutableTreeNode) selectnode
       .getFirstChild();
     selectnode.remove(firstchild);
     tableModel.setRowCount(0);
     File[] fileList = file_select.listFiles();
     list = fu(fileList);

     for (int i = 0; i       tableModel.addRow(list[i]);
     }

    }
    else {

     tableModel.setRowCount(0);
     try {
      File file_select = ((MyFile) selectnode.getUserObject()).file;
      String sizeFile=size(file_select);
      Object re[][]={{file_select.getName(),sizeFile,lastTime(file_select)}};
      list=re;
      tableModel.addRow(list[0]);
     } catch (IOException e) {
      // TODO 自动生成 catch 块
      e.printStackTrace();
     }
    }
   }
  });
 }

 

 public void readfiles(File file, DefaultMutableTreeNode node) {//读取所选节点,获取子节点

  File list[] = file.listFiles();
  if (list == null)
   return;
  for (int i = 0; i    File file_inlist = list[i];
   // String filename = file_inlist.getName();

   if (file_inlist.isDirectory()) {
    parent = new DefaultMutableTreeNode(new MyFile(file_inlist));
    // 添加空白文件夹节点 使子节点显示为文件夹
    File stubadd = null;
    DefaultMutableTreeNode stub = new DefaultMutableTreeNode(
      stubadd);
    parent.add(stub);
    node.add(parent);
   } else {
    DefaultMutableTreeNode son = new DefaultMutableTreeNode(
      new MyFile(file_inlist));
    node.add(son);

   }
  }

 }

 public String size(File file) throws IOException {//读取文件的大小
  FileInputStream fileLength = new FileInputStream(file);
  String sizefile = fileLength.available() + "字节";
  return sizefile;

 }

 public Date lastTime(File file) {
  long lastModified = file.lastModified();// 取得最后一次修改的时间
  Date date = new Date(lastModified);
  date.setTime(lastModified);
  return date;
 }

 

 public Object[][] fu(File[] file) {

  Object[][] m = new Object[file.length][3];
  for (int i = 0; i    m[i][0] = file[i].getName();
   try {
    // 这里有问题,如果是目录,怎么取大小?所以要用if
    // m[i][1] = size(file[i]);
    if (file[i].isDirectory()) {
     m[i][1] = "目录";
    } else {
     m[i][1] = size(file[i]);
    }
   } catch (IOException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
   }
   m[i][2] = lastTime(file[i]);

  }
  return m;
 }
 public int getColumnCount() {
  // TODO 自动生成方法存根
  return 3;
 }

 public int getRowCount(File[] file) {
  // TODO 自动生成方法存根
  return file.length;
 }

 public Object getValueAt(int row, int col) {

  // TODO 自动生成方法存根
        return list[row][col];
 }

 public static void main(String[] args) {
  // TODO Auto-generated method

  Test1 disk = new Test1();
   try {
   disk.treeMake();
  } catch (UnknownHostException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11で重複したドライブ文字をクリーンアップする方法 Windows 11で重複したドライブ文字をクリーンアップする方法 Sep 26, 2023 pm 11:33 PM

Windows 11 は依然として以前のバージョンから大幅にアップグレードされていますが、Microsoft が修正していないように見える問題がいくつかあります。一般的な問題は、Windows 11 でのドライブ文字の重複です。これは、同じドライブが 2 回リストされており、冗長なエントリを削除する必要があります。たとえば、[この PC] の下にリストされ、ナビゲーション ウィンドウのリムーバブル ドライブとして再びリストされます。これによってストレージ容量の消費が増加するわけではありませんが、Windows エクスプローラーが乱雑になることは確かです。 Windows 11 でドライブが 2 回表示されるのはなぜですか?デフォルトでは、Windows はナビゲーション ウィンドウに外部ドライブを 2 回表示します。そういうことです。ただし、ドライブ文字の競合またはシステムの破損

Windows 11 の Feature Access Manager サービスの CPU 使用率が高い Windows 11 の Feature Access Manager サービスの CPU 使用率が高い Feb 19, 2024 pm 03:06 PM

一部の PC ユーザーやゲーマーは、Windows 11 または Windows 10 を使用しているとき、特に特定のアプリケーションやゲームを実行しているときに CPU 使用率が異常に高くなることがあります。この記事では、ユーザーがこの問題を軽減するのに役立ついくつかの提案を提供します。影響を受ける一部の PC ユーザーは、この問題が発生したときに、他のアプリケーションが CPU を 0% ~ 5% しか使用していないことをタスク マネージャーに表示しているのに、サービス ホスト: Capability Access Manager サービスの使用率が 80% にも達していることを指摘しました。 %。 Service Host:Feature Access Manager サービスとは何ですか? Function Access Manager サービスの機能は、アプリケーションにカメラとマイクへのアクセス許可があるかどうかを確認し、必要な許可を付与することです。 UWP アプリケーションの管理が容易になります。

PC に Windows 11 のニューラル プロセッシング ユニット (NPU) が搭載されているかどうかを確認する PC に Windows 11 のニューラル プロセッシング ユニット (NPU) が搭載されているかどうかを確認する Mar 16, 2024 pm 06:34 PM

NPUとはNeural Processing Unitの略で、機械学習アルゴリズムなどの計算を行うために特化したプロセッサです。簡単に言うと、人工知能に関連するタスクを高速化するために特別に設計されたプロセッサです。この記事では、Windows 11 PC に Neural Processing Unit (NPU) が搭載されているかどうかを確認する方法を説明します。 PC に Windows 11 にニューラル プロセッシング ユニット (NPU) がインストールされているかどうかを確認する次の方法は、PC に Windows 11 にニューラル プロセッシング ユニット (NPU) がインストールされているかどうかを確認するのに役立ちます。タスクマネージャー経由 デバイスマネージャー経由 公式Webサイトにアクセスして 以下で、これらすべての方法を詳しく説明しました。 1] タスクマネージャーを使用して、Windows 11 PC に NPU が搭載されているかどうかを確認します

Windows 11 でフォルダーを非表示および再表示する方法 [3 つの方法] Windows 11 でフォルダーを非表示および再表示する方法 [3 つの方法] Sep 23, 2023 am 08:37 AM

フォルダーを非表示にすることは、デスクトップを整理しておくための優れた方法です。個人ファイルやクライアントの詳細情報を他人の目から遠ざけたいと思うかもしれません。それが何であれ、それらをしまっておき、必要に応じて再表示できる機能は大きな節約になります。つまり、これらの隠しファイルはメイン メニューには表示されませんが、引き続きアクセスできます。とても簡単なので、それほど時間はかかりません。 Windows 11でフォルダーを非表示にする方法は? 1. ファイル エクスプローラーを使用し、+ キーを押してファイル エクスプローラーを開きます。 WindowsE 非表示にするフォルダーを見つけて右クリックし、「プロパティ」を選択します。 [全般] タブに移動し、[非表示] ボックスをオンにして、[適用] をクリックし、[OK] をクリックします。次のダイアログ ボックスで、[このフォルダー、サブフォルダーに変更を適用する] をオンにします。

Realtek High-Definition Audio Managerでマイクを設定する方法 Realtek High-Definition Audio Managerでマイクを設定する方法 Jan 02, 2024 am 09:33 AM

win10システムは、さまざまな設定や調整を行うことができるシステムですが、今日は、編集者がrealtek High-Definition Audio Managerでマイクを設定する方法についての解決策をお届けします。興味のある方はぜひ見に来てください。 Realtek High-Definition Audio Manager でマイクを設定する方法: 1. デスクトップの左下隅にある隠しアイコンの表示で「Realtek High-Definition Audio Manager」アイコンを見つけます。 2. クリックしてインターフェイスに入ります。最初に表示されるのは「スピーカー ページ」です。このインターフェイスでは、スピーカー設定を通じてスピーカー サウンドを調整できます。 3. 次に効果音ですが、「イコライザー、ポップ、ロック、クラブ」など、お好みの効果音環境を選択できます。 4. 次に室内の音質補正です。室内空間補正では「」のみ補正できます。

Windows 11/10 で Windows ブート マネージャーを有効または無効にする Windows 11/10 で Windows ブート マネージャーを有効または無効にする Feb 19, 2024 pm 01:09 PM

この記事では、Windows 11/10 で Windows ブート マネージャーを有効または無効にするさまざまな方法を説明します。 Windows ブート マネージャー (BOOTMGR) は、Windows オペレーティング システムの重要なコンポーネントであり、ブート環境の構成、ブート シーケンスの管理、ブート エラーの処理を担当します。これは、起動時または再起動時にロードするオペレーティング システムをユーザーが選択できるため、複数のオペレーティング システムがインストールされている PC で特に便利です。システムの起動を高速化したい場合は、Windows ブート マネージャーを無効にして起動時間を短縮してみてください。これは推奨される方法ではありませんが、起動速度を大幅に向上させることができます。さらに、表示されたブートマネージャーを編集することもできます

115 ネットワーク ディスク上のリソースを見つける方法 115 ネットワーク ディスク上のリソースを見つける方法 Feb 23, 2024 pm 05:10 PM

115 ネットワーク ディスクには大量のリソースが存在しますが、リソースを見つけるにはどうすればよいでしょうか?ユーザーはソフトウェア内で必要なリソースを検索し、ダウンロード インターフェイスに入り、ネットワーク ディスクに保存することを選択できます。 115 ネットワーク ディスク上のリソースを検索する方法のこの紹介では、具体的な内容を説明します。 115 ネットワーク ディスク上のリソースを見つけるにはどうすればよいですか? 回答: ソフトウェアでコンテンツを検索し、クリックしてネットワーク ディスクに保存します。詳細な紹介: 1. まず、アプリに必要なリソースを入力します。 2. 次に、表示されるキーワードのリンクをクリックします。 3. 次に、ダウンロード インターフェイスに入ります。 4. 内部のネットワーク ディスクに保存をクリックします。

Windows 11 でタスク マネージャーのプロセス更新を停止し、タスクをより簡単に強制終了する方法 Windows 11 でタスク マネージャーのプロセス更新を停止し、タスクをより簡単に強制終了する方法 Aug 20, 2023 am 11:05 AM

Windows 11 および Windows 10 でタスク マネージャーのプロセス更新を一時停止する方法 CTRL + Window キー + Del キーを押してタスク マネージャーを開きます。デフォルトでは、タスク マネージャーは [プロセス] ウィンドウを開きます。ここでわかるように、すべてのアプリが際限なく動き回っており、選択するときにそれらを指すのが難しい場合があります。したがって、CTRL を押したままにすると、タスク マネージャーが一時停止されます。アプリを選択したり、下にスクロールしたりすることもできますが、常に CTRL ボタンを押し続ける必要があります。

See all articles