【swing】显示一个包下所有的java文件

 

在这个示例中,创建了一个JavaFileTabbedPanel类,继承自JFrame。在构造函数中,首先设置窗口的标题、关闭操作和首选大小。

然后,创建一个JTabbedPane作为主要容器。在示例中,假设要显示的Java文件位于com/example/package包下,您需要将packagePath变量设置为您实际的包路径。

使用File类获取指定包路径下的所有Java文件,并遍历每个文件。对于每个文件,创建一个JTextArea来显示文件内容,并将其放置在JScrollPane中以实现滚动条。

使用addTab方法将每个Java文件的内容添加到JTabbedPane中,并使用文件名作为选项卡的标题。

最后,将JTabbedPane添加到窗口中,并设置窗口的位置居中。通过SwingUtilities.invokeLater在事件调度线程中创建并显示窗口。

package com.jcli._06_panel;

import javax.swing.*;
import java.awt.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
//参考eclipse的风格,借助TabbedPanel显示一个包下所有的java文件
//
public class _09_JavaFileTabbedPanel extends JFrame {

    private JTabbedPane tabbedPane;

    public _09_JavaFileTabbedPanel() {
        setTitle("Java File Tabbed Panel");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setPreferredSize(new Dimension(800, 600));

        tabbedPane = new JTabbedPane();

        // 用于存储包路径
        String packagePath = "D:\\JavaCode\\code2023\\05\\swing_uppo\\swing-demo\\howj-gui\\src\\main\\java\\com\\jcli\\_06_panel";

        // 获取包下的所有Java文件
        File packageDir = new File(packagePath);
        if (packageDir.exists() && packageDir.isDirectory()) {
            File[] files = packageDir.listFiles((dir, name) -> name.endsWith(".java"));
            if (files != null) {
                for (File file : files) {
                    String fileName = file.getName();
                    String className = fileName.substring(0, fileName.lastIndexOf('.'));
                    String fileContent = getFileContent(file);

                    JTextArea textArea = new JTextArea(fileContent);
                    textArea.setEditable(false);

                    JScrollPane scrollPane = new JScrollPane(textArea);
                    tabbedPane.addTab(className, scrollPane);
                }
            }
        }

        add(tabbedPane);
        pack();
        setLocationRelativeTo(null); // 居中显示窗口
    }

    private String getFileContent(File file) {
        // 读取文件内容并返回
        // 这里使用你喜欢的方式读取文件,比如使用BufferedReader
        // return "File content of " + file.getName();

        StringBuilder content = new StringBuilder();

        try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line).append("\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return content.toString();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new _09_JavaFileTabbedPanel().setVisible(true);
            }
        });
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值