グラフィカルインターフェイスオペレーティングシステムを使用するとき、フォルダーを開くとき、システムはフォルダーの下にすべてのファイルとサブフォルダーを自動的にリストします。この例は、同様の機能を実装しています。最初にユーザーがフォルダーを選択すると、プログラムはファイルが非表示のファイルである場合、「非表示ファイル」がプロパティバーに表示されます。 Progress Barを使用して、完成したかどうかを示します。
アイデアは次のとおりです。
最初はビューレイヤーです。 Jtextfield、Jbutton、Jscrollpane、およびJtableに言及する必要はありません。コントロールは当然、メンバー変数としてオブジェクトを作成する必要があります。さらに、選択したフォルダーを表すには、ファイルタイプのメンバー変数が必要です。
このインスタンスには、1つのコントロール、つまり選択フォルダーボタンのイベントのみが含まれます。そのイベントでは、フォルダーを選択し、キーをリストすることが一般的です。ユーザーがフォルダーを選択したら、jprogressbarコントロールのsetindeterminate(true)メソッドを使用して、ファイル情報を開始した後、jprogressbarコントロールのsetindeterminate(false)メソッドによって停止します。スクロールを停止する。
コードは次のとおりです。
コードコピーは次のとおりです。
java.awt.borderlayoutをインポートします。
java.awt.eventqueueをインポートします。
java.awt.event.actioneventをインポートします。
java.awt.event.actionlistenerをインポートします。
java.awt.event.windowadapterをインポートします。
java.awt.event.windoweventをインポートします。
java.io.fileをインポートします。
javax.swing.jbuttonをインポートします。
javax.swing.jfilechooserをインポートします。
javax.swing.jframeをインポートします。
javax.swing.jpanelをインポートします。
javax.swing.jprogressbarをインポートします。
javax.swing.jscrollpaneをインポートします。
javax.swing.jtableをインポートします。
javax.swing.jtextfieldをインポートします。
javax.swing.border.emptyborderをインポートします。
javax.swing.table.defaultTableModelをインポートします。
javax.swing.uimanagerをインポートします。
Public Class FileListFrameはJFrameを拡張します{
/**
*
*/
private static final long serialversionuid = -615665572894071265l;
プライベートJPanel ContentSpane;
Private JTextfield ChooseTextfield;
プライベートjbutton choicebutton;
プライベートjscrollpaneスクロルペン。
プライベートJTableテーブル。
Private JProgressbar Progressbar;
プライベートファイルchoocefile;
/**
*アプリケーションを起動します。
*/
public static void main(string [] args){
試す {
uimanager.setlookandfeel( "com.sun.java.swing.plaf.nimbus.nimbuslookandfeel");
} catch(スロー可能なe){
e.printstacktrace();
}
eventqueue.invokelater(new runnable(){
public void run(){
試す {
fileListframe frame = new fileListframe();
frame.setVisible(true);
} catch(例外e){
e.printstacktrace();
}
}
});
}
/**
*フレームを作成します。
*/
public fileListframe(){
Settitle( "/u7a97/u4f53/u52a8/u6001/u52a0/u8f7d/u78c1/u76d8/u6587/u4ef6");
addwindowlistener(new windowadapter(){
@オーバーライド
public void windowactivated(windowevent arg0){
do_this_windowactivated(arg0);
}
});
setDefaultCloseoperation(jframe.exit_on_close);
セットバウンド(100、100、450、300);
contentSpane = new JPanel();
contentSpane.setborder(新しいemptyborder(5、5、5、5));
setContentPane(contentSpane);
contentSpane.setLayout(new borderlayout(0、0));
jpanelパネル= new JPanel();
contentSpane.add(パネル、borderlayout.north);
choosetextfield = new jtextfield();
panel.add(choosetextfield);
ChooSeTextfield.setColumns(13);
Button = new JButton( "/u9009/u62e9/u6587/u4ef6/u5939");
Button.AddActionListener(new ActionListener(){
public void actionperformed(actionevent arg0){
do_choosebutton_actionperformed(arg0);
}
});
panel.add(choodbutton);
ProgressBar = new jprogressbar();
Panel.Add(ProgressBar);
scrollpane = new jscrollpane();
contentSpane.add(scrollpane、borderlayout.center);
表= new Jtable();
scrollpane.setviewportview(表);
}
保護されたvoid do_choosebutton_actionperformed(actionevent arg0){
jfilechooser filechooser = new jfilechooser();
fileChooser.setFilesElectionMode(jfilechooser.directories_only);
filechooser.setMultiselectionEnabled(false);
int result = filechooser.showopendialog(this);
if(result == jfilechooser.approve_option){
choodfile = filechooser.getSelectedFile(); //ユーザーが選択したフォルダーを取得します
ChooSeTextfield.settext(chureefile.getabsolutepath()); //ユーザーが選択したフォルダーを表示します
ProgressBar.setIndeterminate(true); //スクロールバーを設定してスクロールを開始します
final file [] subfiles = choicefile.listfiles(); //ユーザーが選択したフォルダーですべてのファイル(フォルダー)を取得します
最終的なdefaultTableModelモデル=(defaultTableModel)table.getModel();
model.setRowCount(0); //テーブルをクリアします
新しいスレッド(){//新しいスレッドを起動します
public void run(){
for(int i = 0; i <subfiles.length; i ++){//ユーザーが選択したフォルダーをトラバース
if(subfiles [i] .isfile()){//それがファイルであるかどうかを決定します
object [] Property = new Object [3];
プロパティ[0] = i + 1; //シリアル番号を保存します
プロパティ[1] = subfiles [i] .getname(); //ファイル名を保存します
プロパティ[2] = "";
if(subfiles [i] .ishidden()){//それが非表示ファイルであるかどうかを判断します
プロパティ[2] = "Hiddenファイル";
}
model.addrow(プロパティ); //テーブルにレコードを追加します
table.setModel(モデル); //テーブルを更新します
}
試す {
Thread.sleep(100); //スレッドは0.1秒間眠り、動的荷重を実現します
} catch(arternedexception e){
e.printstacktrace();
}
}
ProgressBar.setIndeterminate(false); // Progress Barのスクロールを停止します
};
}。始める();
}
}
保護されたvoid do_this_windowactivated(windowevent arg0){
DefaultTableModel Model =(defaultTableModel)table.getModel();
model.setColumnidentifiers(new object [] {"serial number"、 "file name"、 "Properties"});
}
}
効果は写真に示されています: