在这个示例中,创建了一个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);
}
});
}
}