问题是对于读取的时候,读取出来的字符串一直是null
package book;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class BookReader {
public static String str="";
private static int num=0;
public static void main(String[] args) throws Exception {
// //框架
JFrame frame=new JFrame("小说阅读");
frame.setBounds(100, 100, 500, 600);
frame.setVisible(true);
frame.setLayout(new BorderLayout());
//小说界面
JTextArea body=new JTextArea("默认为第0回,点击下一回开始阅读");
body.setSize(500, 100);
frame.add(body);
body.setBackground(Color.yellow);
//按钮以及下方文字
Panel pan2=new Panel(new GridLayout(2,1));
Panel pan1=new Panel(new FlowLayout());
JButton next=new JButton("下一章");
JButton last=new JButton("上一章");
JButton color=new JButton("深色");
JButton defalut=new JButton("默认");
JButton exist=new JButton("退出");
pan1.add(color);
pan1.add(defalut);
pan1.add(last);
pan1.add(next);
pan1.add(exist);
pan2.add(pan1);
JTextArea pan3=new JTextArea("");
pan3.setBackground(new Color(172, 203, 213));
pan3.setText("阅读小说,荡涤心灵");
pan2.add(pan3);
//组合
frame.add(body,BorderLayout.CENTER);
frame.add(pan2,BorderLayout.AFTER_LAST_LINE);
//深色按钮监听
color.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if(body.getBackground()==Color.yellow) {
body.setBackground(Color.orange);
}
else if(body.getBackground()==Color.orange) {
body.setBackground(Color.red);
}
else if(body.getBackground()==Color.red) {
body.setBackground(Color.LIGHT_GRAY);
}
else if(body.getBackground()==Color.LIGHT_GRAY) {
body.setBackground(Color.gray);
}
}
});
//默认按钮的监听
defalut.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(body.getBackground()==Color.yellow) {
body.setBackground(Color.yellow);
}
else if(body.getBackground()==Color.orange) {
body.setBackground(Color.yellow);
}
else if(body.getBackground()==Color.red) {
body.setBackground(Color.yellow);
}
else if(body.getBackground()==Color.LIGHT_GRAY) {
body.setBackground(Color.yellow);
}
else if(body.getBackground()==Color.gray) {
body.setBackground(Color.yellow);
}
}
});
//对于小说的读取
//下一章
next.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
RandomAccessFile reader=new RandomAccessFile("三国演义.txt","rw");
str=reader.readLine();
while(reader.readLine()!=null) {
if(reader.readLine().startsWith(" 第00"+num)) {
str+=reader.readLine();}
if(reader.readLine().startsWith(" 第00"+(num+1))){
num=num+1;
break;
}
}
body.setText(str);
str="";
reader.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//上一章
last.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
BufferedReader reader=new BufferedReader(new FileReader("三国演义.txt"));
str=reader.readLine();
while(reader.readLine()!=null) {
if(reader.readLine().startsWith(" 第00"+(num-1))) {
str+=reader.readLine();}
if(reader.readLine().startsWith(" 第00"+num)){
num=num-1;
break;
}
body.setText(str);
str="";
reader.close();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//退出按钮的监听
exist.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}}
其中小说格式前10章开头都是 空格+第00X章
但是我不知道为啥读取到的字符串str全是null
此外我还有个问题。对于num我想对他进行修改,定义成static肯定是没法修改的,有没有其他办法?
谢谢!