项目需求,需实现如题的小功能,由于刚接触swing几天,对他的线程机制不是很懂,可能demo中的代码有不妥之处,望大牛们指点一二,谢谢哈
package com.swing.study01;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
public class Study14 extends JFrame
{
public JTextArea ja = new JTextArea();
public javax.swing.JScrollPane jScrollPane = new JScrollPane(ja);
public Study14() {
jScrollPane.setBounds(0, 160, 500, 300);
add(jScrollPane);
try {
ReadFile.readFile("D:\\test\\test.txt",
ja);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException,
InterruptedException, BadLocationException {
Study14 f = new Study14();
f.setVisible(true);
f.setBounds(400, 300, 800, 500);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
int index = f.ja.getText().indexOf("目标字符");
f.ja.setCaretPosition(index);
int line = -1;
line = f.ja.getLineOfOffset(index);
//高亮
lineHighlighter(f.ja,line,new Color(23, 239, 255));
Thread.sleep(50);
//公式=目标所在行 * (文本域高/文本总行数) - 滚动条高/2
int h = line * (f.ja.getHeight() / f.ja.getLineCount()) - (f.jScrollPane.getHeight()/2);
f.jScrollPane.getVerticalScrollBar().setValue(h);
}
/**
* 方法描述:高亮显示行
* @param area
* @param line
*/
public static void lineHighlighter(JTextArea area,int line,Color color)
{
//单击 高亮
DefaultHighlighter h = (DefaultHighlighter) area.getHighlighter();
MyHighlightPainter p = new MyHighlightPainter(
color);
try
{
int start = area.getLineStartOffset(line);
int end = area.getLineEndOffset(line);
h.removeAllHighlights();
h.addHighlight(start, end, p);
} catch (BadLocationException e1)
{
// e1.printStackTrace();
}
}
}
class MyHighlightPainter extends DefaultHighlighter.DefaultHighlightPainter
{
public MyHighlightPainter(Color color)
{
super(color);
}
}
class ReadFile {
public static void readFile(String fileName, JTextArea area)
throws IOException {
FileReader reader = null;
BufferedReader bf = null;
try {
reader = new FileReader(new File(fileName));
bf = new BufferedReader(reader);
String line = null;
while ((line = bf.readLine()) != null) {
area.append(line + "\n");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
reader.close();
bf.close();
}
}
}
分享到:
相关推荐
将matlab.txt置于UltraEdit-32的安装目录下,在UltraEdit的高级菜单选项中选择配置-语法高亮,浏览选择matlab.txt文件即可。
介绍UltraEdit-32软件的使用,适合初学者
NULL 博文链接:https://androidnew.iteye.com/blog/441837
UltraEdit-32.v10.10a.HH.zip
dir *.uew /w ... xhtml11.uew xhtmlbasic.uew xjtag.uew xml.uew xmlschema.uew xquery.uew xsl.uew XYplorer.uew Y!WE.uew yaml.uew yang.uew zillions.uew zmud.uew zope.uew ... 0 个目录 328,660,770,816 可用...
SAP - ABAP UltraEdit 高亮显示文件
查看路径,打开UE,查看”语法高亮“选项,得到../WordFiles路径,将需要的语法文件复制到改路径即可,V24以前的老版本可能需要其他修改,请自行搜索使用方法
ultraedit wordfiles all in one collection
UltraEdit语言高亮显示
启动Ultraedit,依次打开:高级(A) --> 配置(C) --> 编辑器显示 --> 语法着色。找到文档的完整目录名称所指示的目录, 然后把objective-c.uew文件放在对应的目录下即可。
文件下载后复制到C:\Users\XXXX\AppData\Roaming\IDMComp\UltraEdit\wordfiles文件夹中,其中文件夹AppData文件夹可能被隐藏,然后打开UltraEdit点击高级中的设置,搜索语法高亮,在文档的完整目录名称选项中先任意...
UltraEdit用于VHDL/Verilog高亮显示,尽显优势,贴到wordfile里就行了。
很好的文本编辑器,对编程很有帮助
使UltraEdit支持Objective-C语法高亮
精简版,压缩包只有4兆,没有哪些冗余的东西,...功能都有。非常好用。不用注册。win10上可用,完全绿色。打包成zip了。不是EXE,没有病毒,各种杀毒引擎都查杀过了。放心使用。全网找了半天,竟然只有这里下载才有。
674个UltraEdit文本高亮配色方案
本查看可以使UltraEdit得smali语法高亮. 具体用法: 下载本附件, 并拷贝到UltraEdit安装目录下的... 检验办法: 打开UltraEdit -> 高级 -> 配置 -> 编辑器显示 -> 语法高亮 -> 文档完整目录名称. 如果是该目录就正确了.