java文本行字体_java获取文本文件的行数以及JTextpane设定特定行的字体、颜色

本文介绍了如何使用Java获取文本文件的行数,通过LineNumberReader实现。同时展示了如何在JTextPane中设定特定行的字体、颜色,通过插入不同属性的文本实现各行列样式的定制。
摘要由CSDN通过智能技术生成

一、java获取文本文件的行数

public int getRows(File file) {

LineNumberReader lnr = null;

int num = 0;

try {

lnr = new LineNumberReader(new FileReader(file));

lnr.skip(Long.MAX_VALUE);

num = lnr.getLineNumber();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

lnr.close();

} catch (IOException e) {

e.printStackTrace();

}

}

return ++num;

}

skip(Long.MAX_VALUE)     Parameters:n - The number of characters to skip

java.io.LineNumberReader类是java.io.BufferedReader类的扩展,它封装了处理行号的额外能力,例如下例中得到不以“#”开头的行号:

public void parseFile(String filePath) throws IOException {

LineNumberReader in = new LineNumberReader(new FileReader(filePath));

String line = "";

while ((line = in.readLine()) != null) {

if (line.startsWith("#")) {

continue;

} else {

throw new IOException("第" + in.getLineNumber() + "行丢了#号");

}

}

in.close();

}

行号0的意味着我们还没开始读入。如果在一个程序中我们每次读入一行,并输出该行和它的行号,行号将从1开始。

二、JTextpane设定特定行的字体、颜色

下面的代码在一个JTextPane中显示了一个图标,三行文字,每行用不同的颜色和大小显示:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.text.*;

import java.io.*;

public class Test {

JFrame frame;

JTextPane textPane;

File file;

Icon image;

public Test(){

frame = new JFrame( "JTextPane ");

textPane = new JTextPane();

file = new File( "./classes/test/icon.gif ");

image = new ImageIcon(file.getAbsoluteFile().toString());

}

public void insert(String str, AttributeSet attrSet) {

Document doc = textPane.getDocument();

str = "\n " + str ;

try {

doc.insertString(doc.getLength(), str, attrSet);

}

catch (BadLocationException e) {

System.out.println( "BadLocationException: " + e);

}

}

public void setDocs(String str,Color col,boolean bold,int fontSize) {

SimpleAttributeSet attrSet = new SimpleAttributeSet();

StyleConstants.setForeground(attrSet, col);

//颜色

if(bold==true){

StyleConstants.setBold(attrSet, true);

}//字体类型

StyleConstants.setFontSize(attrSet, fontSize);

//字体大小

insert(str, attrSet);

}

public void gui() {

textPane.insertIcon(image);

setDocs( "第一行的文字 ",Color.red,false,20);

setDocs( "第二行的文字 ",Color.BLACK,true,25);

setDocs( "第三行的文字 ",Color.BLUE,false,20);

frame.getContentPane().add(textPane, BorderLayout.CENTER);

frame.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

System.exit(0);

}});

frame.setSize(200,300);

frame.setVisible(true);

}

public static void main(String[] args) {

Test test = new Test();

test.gui();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值