gpt4 book ai didi

java - 当我在 JList 中单击文件时如何显示文件中的文本?

转载 作者:行者123 更新时间:2023-11-30 03:00:21 26 4
gpt4 key购买 nike

我正在编写一个 Java GUI 程序来满足以下规范:编写一个 Java GUI 应用程序,允许用户从本地文件系统中选择一个文件。在带有滚动条的 JTextArea 中显示所选文件的内容。仅支持文本文件的显示就足够了。

我现在正在尝试实现在 JTextArea 中显示所选文件内容的功能,但我不知道如何执行此操作。我假设我将向 JList 添加某种事件监听器,然后在 JTextArea 上调用 setText,但不知道如何执行此操作。任何其他改进我的程序以满足规范的建议都会很棒。这是我的 GUI 类:

import java.awt.Component;
import java.awt.Container;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.io.File;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileSystemView;

public class FileGUI {

@SuppressWarnings("unchecked")
public FileGUI() {

JFrame window = new JFrame("Local File List");

Container pane = window.getContentPane();
pane.setLayout(new GridLayout(2,1));

@SuppressWarnings("rawtypes")
JList fileList = new JList(new File("C:\\").listFiles());
fileList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
fileList.setCellRenderer(new MyCellRenderer());
fileList.setLayoutOrientation(javax.swing.JList.HORIZONTAL_WRAP);
fileList.setName("fileList");
fileList.setVisibleRowCount(-1);
pane.add(new JScrollPane(fileList));

JTextArea jt = new JTextArea(20, 50);
jt.setEditable(false);
JScrollPane js = new JScrollPane(jt);
pane.add(js);

window.pack();
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {

@SuppressWarnings("unused")
FileGUI FG = new FileGUI();

}

});
}

private static class MyCellRenderer extends DefaultListCellRenderer {

private static final long serialVersionUID = 1L;

@Override
public Component getListCellRendererComponent(@SuppressWarnings("rawtypes") JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {

if (value instanceof File) {

File file = (File) value;
setText(file.getName());
setIcon(FileSystemView.getFileSystemView().getSystemIcon(file));

if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
} else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setEnabled(list.isEnabled());
setFont(list.getFont());
setOpaque(true);
}

return this;
}

}

}

感谢您的宝贵时间。

最佳答案

一个简单的方法是在 onclick 监听器中读取文件,然后更新您的 View 。

    list_item.addListSelectionListener(new ListSelectionListener() {

@Override
public void valueChanged(ListSelectionEvent arg0) {
try{
BufferedReader br = new BufferedReader(new FileReader("C:\\myfile.txt"));
String line;
while ((line = br.readLine())!= null)
{
// read file line by line here
your_text_area.append(line+"\n");

}
}catch(Exception e){
e.printStackTrace();
}
}
});

其他来源:

关于java - 当我在 JList 中单击文件时如何显示文件中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36163681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com