Java Swing,点击按钮,输出到JTextArea

Java Swing,点击按钮,输出到JTextArea,java,swing,jbutton,jtextarea,Java,Swing,Jbutton,Jtextarea,我有两个类,其中一个是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 " +

我有两个类,其中一个是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();
    }
}
当运行输出并在文本字段中输入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上显示的输出,但我不知道如何显示。有人能告诉我怎么做吗

谢谢

希望这有帮助:)


希望这对您有所帮助:)

您只需在
目录MusicLocator
FindMP3按钮操作执行方法中执行以下更改即可。您不需要直接打印,只需将内容存储在
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);
}
公共静态字符串目录musiclocator(文件目录){
尝试
{
字符串[]文件类型=新字符串[]{“mp3”};//仅搜索mp3文件
StringBuilder outString=new StringBuilder(“获取“+dir.getCanonicalPath()+”中的所有.mp3文件,包括子目录中的文件\n”);
List files=(List)FileUtils.listFiles(dir,filetype,true);
用于(文件:文件)
{
outString.append(file.getAbsolutePath()+“\n”);//获取文件的绝对路径
}
追加(“\n已完成搜索”);
return outString.toString()
}
捕获(IOE异常)
{
e、 printStackTrace();
返回null;
}
}
私有void findMP3ButtonActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
String fLocation=dirToSearch.getText();//从textfield获取输入
File dir=new File(fLocation);//将位置转换为路径
字符串输出=MusicSearch.directoryMusicLocator(dir);
//替换为JTextArea字段名
.setText(输出);
}

您只需在您的
目录MusicLocator
FindMP3按钮操作执行方法中执行以下更改即可。您不需要直接打印,只需将内容存储在
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);
}
公共静态字符串目录musiclocator(文件目录){
尝试
{
字符串[]文件类型=新字符串[]{“mp3”};//仅搜索mp3文件
StringBuilder outString=new StringBuilder(“获取“+dir.getCanonicalPath()+”中的所有.mp3文件,包括子目录中的文件\n”);
List files=(List)FileUtils.listFiles(dir,filetype,true);
用于(文件:文件)
{
outString.append(file.getAbsolutePath()+“\n”);//获取文件的绝对路径
}
追加(“\n已完成搜索”);
return outString.toString()
}
捕获(IOE异常)
{
e、 printStackTrace();
返回null;
}
}
私有void findMP3ButtonActionPerformed(java.awt.event.ActionEvent evt){
//TODO在此处添加您的处理代码:
String fLocation=dirToSearch.getText();//从textfield获取输入
File dir=new File(fLocation);//将位置转换为路径
字符串输出=MusicSearch.directoryMusicLocator(dir);
//替换为JTextArea字段名
.setText(输出);
}

与其调用将输出发送到标准输出蒸汽的
System.out.println
,不如将其发送到文本区域。但是,如果不引用您正在使用的
JTextArea
,您就无法做到这一点,因此您需要更改
directoryMusicLocator
的签名,以包含
JTextArea
,如下所示:

publicstaticvoid目录musiclocator(文件目录,JTextArea输出extarea){

然后,您需要将
System.out.println(newText)
更改为
outputTextArea.append(newText+System.getProperty(“line.separator”))
(用发送到JTextArea的参数替换“newText”)


最后,更改
directoryMusicLocator(File)
-传递对
JTextArea
的引用:
MusicSearch.directoryMusicLocator(dir,jTextArea1)

您应该将其发送到文本区域,而不是调用将输出发送到标准输出蒸汽的
System.out.println
。但是如果不引用您正在使用的
JTextArea
,则无法执行此操作,因此需要更改
directoryMusicLocator
的签名以包含
JTextArea
类似于:

publicstaticvoid目录musiclocator(文件目录,JTextArea输出extarea){

然后,您需要将
System.out.println(newText)
更改为
outputTextArea.append(newText+System.getProperty(“line.separator”))
(用发送到JTextArea的参数替换“newText”)


最后,更改
directoryMusicLocator(File)
-传递对
JTextArea
的引用:
MusicSearch.directoryMusicLocator(dir,jTextArea1)

我认为JTextArea的
setText
方法应该这样做。我尝试过使用它,但它只输出JTextArea上按钮的变量名。我认为JTextArea的
setText
方法应该这样做。我尝试过使用它,但它只输出t上按钮的变量名JTextArea一个稍微干净一点的方法是在
JTextArea
s周围制作一个包装器,充当
java.io.Writer
;这将允许您通过
PrintWriter
JTextArea
系统进行接口TextArea
s充当
java.io.Writer
;这将允许您与
JT
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);
}