最近很多小伙伴都在问如何在Javaswing库中浏览文件?和java的swing库这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展bash–在MSYS中浏览文件夹、JavaSwin
最近很多小伙伴都在问如何在Java swing库中浏览文件?和java的swing库这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展bash – 在MSYS中浏览文件夹、Java Swing 文件浏览、java – 如何在Swing中读取和显示大文本文件?、java – 如何在Swing中递归禁用我的组件?等相关知识,下面开始了哦!
本文目录一览:- 如何在Java swing库中浏览文件?(java的swing库)
- bash – 在MSYS中浏览文件夹
- Java Swing 文件浏览
- java – 如何在Swing中读取和显示大文本文件?
- java – 如何在Swing中递归禁用我的组件?
如何在Java swing库中浏览文件?(java的swing库)
我想知道java swing库中是否存在某种J工具,它可以打开文件浏览器窗口并允许用户选择文件。然后,文件的输出将是所选文件的绝对路径。
提前致谢,
答案1
小编典典您可以使用JFileChooser类,请检查此示例。
bash – 在MSYS中浏览文件夹
cd / d / for D:
等等
Java Swing 文件浏览
怎么实现java swing窗体内直接打开各种类型的文件
java – 如何在Swing中读取和显示大文本文件?
我正在开发的程序可以使用JTextArea从/向文件读写.当文件相当大时,将该文件中的数据读入文本区域需要花费大量时间.作为一个例子,我有一个文件,目前有40,000行文本,大约50个字符一行;还有,一些线包裹.有很多文本,从那个文件中读取需要花费更多的时间.
目前,我正在使用标准读取方法,该方法利用JTextArea组件包含的BufferedReader实例.我想要做的是加载JTextArea,并在屏幕上加载一定量的文本.屏幕上的其余部分在后台单独的线程中加载.
使用InputStream并将每个字符写入数组然后将字符写入JTextArea就足够了吗?或者应该采用不同的方法吗?我正在努力实现快速有效的读取方法.
解决方法
首先,需要以这样的方式读取文件,以便它可以逐步更新UI而不会导致不可接受的延迟
第二,JTextArea实际处理这一数据量的能力……
第一个问题相对来说很容易修复.您需要确保的是,在读取文件时您没有阻止事件调度线程,并且您只是在事件调度线程的上下文中更新JTextArea.为此,SwingWorker是一个很好的选择,例如……
public class FileReaderWorker extends SwingWorker<List<String>,String> { private File file; private JTextArea ta; public FileReaderWorker(File file,JTextArea ta) { this.file = file; this.ta = ta; } public File getFile() { return file; } public JTextArea getTextArea() { return ta; } @Override protected List<String> doInBackground() throws Exception { List<String> contents = new ArrayList<>(256); try (BufferedReader br = new BufferedReader(new FileReader(getFile()))) { String text = null; while ((text = br.readLine()) != null) { // You will want to deal with adding back in the new line characters // here if that is important to you... contents.add(text); publish(text); } } return contents; } @Override protected void done() { try { get(); } catch (InterruptedException | ExecutionException ex) { ex.printstacktrace(); // Handle exception here... } } @Override protected void process(List<String> chunks) { JTextArea ta = getTextArea(); for (String text : chunks) { ta.append(text); } } }
有关详细信息,请查看Concurrency in Swing和Worker Threads and SwingWorker
ps-你不需要使用List来存储内容,我只是把它作为一个例子……
第二个问题要复杂得多,需要一些额外的测试以确保它实际上是一个问题,但一般来说,超过1mb的内容往往会导致问题……
为此,您需要能够管理JScrollPane,能够从文件中向后和向前请求文本块,并尝试有效地“捏造”该过程(这样您只需要所需的文本加载,但仍然可以使它看起来像你在JTextArea中加载了所有文本)…
您还可以查看FileChannel,它提供了比标准java.io类更多的功能,包括内存映射,对于初学者,请查看Reading,Writing,and Creating Files.
您还可以考虑使用高度优化的JList或JTable来显示大量数据.这有一些局限性,因为期望固定的行高,当改变时(动态行高)会影响性能,但可能是一个合适的替代方案……
java – 如何在Swing中递归禁用我的组件?
解决方法
void setEnabled(Component component,boolean enabled) { component.setEnabled(enabled); if (component instanceof Container) { for (Component child : ((Container) component).getComponents()) { setEnabled(child,enabled); } } }
请注意,除非您在其他位置跟踪它,否则每个组件的先前启用/禁用状态都将丢失.
今天关于如何在Java swing库中浏览文件?和java的swing库的讲解已经结束,谢谢您的阅读,如果想了解更多关于bash – 在MSYS中浏览文件夹、Java Swing 文件浏览、java – 如何在Swing中读取和显示大文本文件?、java – 如何在Swing中递归禁用我的组件?的相关知识,请在本站搜索。
本文标签: