作成しているもの
Javaで簡易FTPソフトを作成しています。FFFTPのような画面設計にし、画面左側に自分のPCディレクトリを、右側にFTPサーバーのファイルディレクトリをそれぞれJList表示し、ファイルを選択した状態で画面中央の送信(受信)ボタンを押すという簡単な仕組みです。
問題
現在JListにファイル検索機能を使用し、ダイアログで選択されたディレクトリ下のファイル名を、一覧表示する機能を作っています。コンソール上では選択されたディレクトリ下のファイル名は取得できているのですが、JListを更新することができません。何が原因なのでしょうか。
よろしくお願い致します。
import
1import java.awt.Font; 2import java.awt.event.ActionEvent; 3import java.awt.event.ActionListener; 4import java.io.File; 5 6import javax.swing.JButton; 7import javax.swing.JFileChooser; 8import javax.swing.JFrame; 9import javax.swing.JLabel; 10import javax.swing.JList; 11import javax.swing.JPanel; 12import javax.swing.JScrollPane; 13import javax.swing.JTable; 14 15class myftp extends JFrame{ 16 JButton Upload_Button, Download_Button, File_Search_Button; 17 JLabel Label1, Label2, Label3; 18 JList<String> PC_File_List; 19 JTable Pc_File_Table, FTP_File_Table; 20 JPanel Panel1; 21 JFileChooser filechooser = new JFileChooser("C:"); 22 JScrollPane ScrollPane; 23 24 25 26 public static void main(String args[]){ 27 myftp frame = new myftp("test"); 28 frame.setVisible(true); 29 frame.setTitle("MyFTP"); 30 frame.setSize(1000, 600); 31 frame.setLocationRelativeTo(null); 32 frame.setResizable(false); 33 frame.setVisible(true); 34 frame.setLayout(null); 35 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 36 37 } 38 39 myftp(String title){ 40 41 JPanel p = new JPanel(); 42 p.setLayout(null); 43 44 45 // 送信ボタン 46 Upload_Button = new JButton("送信→"); 47 Upload_Button.setBounds(425, 85, 140, 100); 48 Upload_Button.setFont(new Font("メイリオ", Font.BOLD, 32)); 49 Upload_Button.setForeground(new java.awt.Color(89, 89, 89)); 50 51 52 // 受信ボタン 53 Download_Button = new JButton("←受信"); 54 Download_Button.setBounds(425, 250, 140, 100); 55 Download_Button.setFont(new Font("メイリオ", Font.BOLD, 32)); 56 Download_Button.setForeground(new java.awt.Color(89, 89, 89)); 57 58 59 // ファイル選択ボタン 60 File_Search_Button = new JButton("ファイルを選択"); 61 File_Search_Button.setBounds(285, 40, 120, 35); 62 File_Search_Button.setFont(new Font("メイリオ", Font.BOLD, 12)); 63 File_Search_Button.setForeground(new java.awt.Color(89, 89,89)); 64 65 66 // 選択ボタンを押したとき 67 File_Search_Button.addActionListener(new ActionListener(){ 68 public void actionPerformed(ActionEvent e){ 69 PC_File_Show_Button(); 70 } 71 }); 72 73 74 PC_BaseList(); 75 FTP_BaseList(); 76 add(Upload_Button); 77 add(Download_Button); 78 add(File_Search_Button); 79 80 81 82 83 getContentPane().add(p, BorderLayout.CENTER); 84 85 // Container contentPane = getContentPane(); 86 // contentPane.add(p, BorderLayout.CENTER); 87 88 } 89 90 public void PC_BaseList(){ 91 String directory = ("C:"); 92 93 // Fileクラスをインスタンス化 94 File file = new File(directory); 95 96 // 選択ディレクトリ下のファイルを表示 97 String File_Directory[] = file.list(); 98 99 PC_File_List = new JList<String>(File_Directory); 100 101 ScrollPane = new JScrollPane(); 102 ScrollPane.getViewport().setView(PC_File_List); 103 ScrollPane.setBounds(10,85,395,265); 104 add(ScrollPane); 105 } 106 107 public void FTP_BaseList(){ 108 String directory = ("C:"); 109 110 // Fileクラスをインスタンス化 111 File file = new File(directory); 112 113 // 選択ディレクトリ下のファイルを表示 114 String File_Directory[] = file.list(); 115 116 PC_File_List = new JList<String>(File_Directory); 117 118 ScrollPane = new JScrollPane(); 119 ScrollPane.getViewport().setView(PC_File_List); 120 ScrollPane.setBounds(585,85,395,265); 121 add(ScrollPane); 122 } 123 124 125 public void PC_File_Show_Button(){ 126 Label1 = new JLabel(); 127 128 filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 129 filechooser.setMultiSelectionEnabled(true); 130 131 132 int selected = filechooser.showOpenDialog(File_Search_Button); 133 if (selected == JFileChooser.APPROVE_OPTION){ 134 135 // 選択されたディレクトリを格納 136 String directory = String.valueOf(filechooser.getSelectedFile()); 137 138 // Fileクラスをインスタンス化 139 File file = new File(directory); 140 141 // 選択ディレクトリ下のファイルを表示 142 String File_Directory[] = file.list(); 143 144 PC_File_List = new JList<String>(File_Directory); 145 146 147 ScrollPane = new JScrollPane(); 148 ScrollPane.getViewport().setView(PC_File_List); 149 ScrollPane.setBounds(50,50,200,200); 150 add(ScrollPane); 151 152 for(String ShowFiles: File_Directory){ 153 System.out.println(ShowFiles); 154 } 155 156 }else if (selected == JFileChooser.CANCEL_OPTION){ 157 Label1.setText("キャンセルされました"); 158 }else if (selected == JFileChooser.ERROR_OPTION){ 159 Label1.setText("エラー又は取消しがありました"); 160 } 161 } 162 163}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/03 05:58 編集