繁体   English   中英

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

[英]Java Swing, On button click, output to JTextArea

我有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();
    }
}

这是因为它在目录(例如C:\\ Music)上搜索Mp3文件

对于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上的输出,但是我不知道如何。 有人可以告诉我如何。

谢谢

您只需要在directoryMusicLocatorfindMP3ButtonActionPerformed方法中进行以下更改。 无需直接打印,您只需将内容存储在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);
}
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

希望这可以帮助 :)

与其调用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")) (将“ newText”替换为要发送到JTextArea的参数。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM