我有2个类,其中一个是GUI。
我的第一堂课名为MusicSearch.java,它有:
public static void directoryMusicLocator(File dir) {
try
{
String[] filetype = new String[] { "mp3" }; // only search mp3 files
System.out.println("Getting all .mp3 files in " + dir.getCanonicalPath() + " including those in subdirectories");
List<File> files = (List<File>) FileUtils.listFiles(dir, filetype, true);
for (File file : files)
{
System.out.println(file.getAbsolutePath()); // get the file's absolute path
}
System.out.println("\nFinished Searching.");
}
catch (IOException e)
{
e.printStackTrace();
}
}
这样做是因为它在目录上搜索Mp3文件,例如C:\ Music
对于GUI,我使用netbeans的JFrame Designer创建它,可以在下图中看到它的屏幕截图。 (我目前无法嵌入图像,因此我只能提供图像链接。)
http://i.stack.imgur.com/7pLPL.jpg
在“输入位置”旁边的JTextField上,用户输入一个位置,例如C:\ Music。当用户单击“查找MP3”按钮时,将调用方法directoryMusicLocator。下面是查找MP3按钮的动作监听器:
private void findMP3ButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String fLocation = dirToSearch.getText(); // this gets the input from the textfield
File dir = new File(fLocation); // converts the location to path
MusicSearch.directoryMusicLocator(dir);
}
在运行并且用户在文本字段中输入C:\ Music时,可以看到下面的输出示例:
C:\Music\Feint - Times Like These (Fracture Design Remix).mp3
C:\Music\Ficci - Climax (FREE).mp3
C:\Music\Ficci - Making Me Blue (FREE).mp3
现在我想要的是在JTextArea上显示的输出,但我不知道如何。有人能告诉我怎么做。
由于
答案 0 :(得分:2)
您只需在directoryMusicLocator
和findMP3ButtonActionPerformed
方法中进行以下更改即可。您无需直接打印,只需将内容存储在StringBuilder
中,然后将其返回,以便您可以在JTextArea
中显示。
public static String directoryMusicLocator(File dir) {
try
{
String[] filetype = new String[] { "mp3" }; // only search mp3 files
StringBuilder outString = new StringBuilder("Getting all .mp3 files in " + dir.getCanonicalPath() + " including those in subdirectories\n");
List<File> files = (List<File>) FileUtils.listFiles(dir, filetype, true);
for (File file : files)
{
outString.append(file.getAbsolutePath()+"\n"); // get the file's absolute path
}
outString.append("\nFinished Searching.");
return outString.toString()
}
catch (IOException e)
{
e.printStackTrace();
return null;
}
}
private void findMP3ButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String fLocation = dirToSearch.getText(); // this gets the input from the textfield
File dir = new File(fLocation); // converts the location to path
String output = MusicSearch.directoryMusicLocator(dir);
// Replace <jTextArea> with your JTextArea field name
<jTextArea>.setText(output);
}
答案 1 :(得分:1)
JTextArea textArea = new JTextArea(); // instantiate the JTextArea
textArea.append("text"); // append to the existing text on JTextArea
textArea.setText("text"); // set the current text with the given one
希望这有助于:)
答案 2 :(得分:1)
您应该将输出发送到文本区域,而不是调用将System.out.println
发送到标准输出流的JTextArea
。但是,如果不引用您正在使用的directoryMusicLocator
,则无法执行此操作,因此您需要更改JTextArea
的签名以包含public static void directoryMusicLocator(File dir, JTextArea outputTextArea) {
,如下所示:
System.out.println(newText)
然后,您需要将outputTextArea.append(newText + System.getProperty("line.separator"))
更改为directoryMusicLocator(File)
。 (将“newText”替换为您要发送到JTextArea的参数。
最后,更改JTextArea
的调用网站 - 将引用传递给MusicSearch.directoryMusicLocator(dir, jTextArea1)
:{{1}}