上代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.TextArea;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Button;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.File;public class FileDialogTest extends Frame implements ActionListener
{
private Menu menu = new Menu("File");
private MenuBar menuBar = new MenuBar();
private MenuItem item_1 = new MenuItem("Open");
private MenuItem item_2 = new MenuItem("Close");
private MenuItem item_3 = new MenuItem("Exit");
private TextArea textArea = new TextArea(); public FileDialogTest(){
super("FileDialog");
menu.add(item_1);
menu.add(item_2);
menu.addSeparator();
menu.add(item_3); menuBar.add(menu); item_1.addActionListener(this);
item_2.addActionListener(this);
item_3.addActionListener(this); setLayout(new BorderLayout());
//add(menuBar,BorderLayout.NORTH);MenuBar不能用这种方法添加。
setMenuBar(menuBar);
add(textArea,BorderLayout.CENTER);
textArea.setEditable(false); setSize(400,600);
pack();
setVisible(true);
} public void actionPerformed(ActionEvent e){
if(e.getSource().equals(item_3)){
System.exit(0);
}
else if(e.getSource().equals(item_1)){
FileDialog dialog = new FileDialog(this,"Open File",FileDialog.LOAD);
dialog.setVisible(true);
if(!dialog.getFile().equals(null)){
File file = new File(dialog.getDirectory()+dialog.getFile());
if(file.exists()){
reader(file.toString());
}
else
textArea.setText("the filename:"+dialog.getFile()+"is invalid");
}
dialog.dispose();
}
} public void reader(String file){
textArea.setText(" ");
try{
BufferedReader read = new BufferedReader(new FileReader(file));
String line ;
while(!read.readLine().equals(null)){
line = read.readLine();
textArea.append(line+'\n');
}
read.close();
textArea.setCaretPosition(0);
}catch(FileNotFoundException e){
System.err.println("Error:"+e);
}catch(IOException ef){
System.err.println("Error:"+ef);
}
} public static void main(String [] args){
FileDialogTest fileDialog = new FileDialogTest();
}
}请教,为啥显示出来的文本不完全那?还有,在显示出来的文本最后总有一个“null”。而且,命令提示符窗口中还有一大堆异常提示……为啥?
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.TextArea;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Button;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.File;public class FileDialogTest extends Frame implements ActionListener
{
private Menu menu = new Menu("File");
private MenuBar menuBar = new MenuBar();
private MenuItem item_1 = new MenuItem("Open");
private MenuItem item_2 = new MenuItem("Close");
private MenuItem item_3 = new MenuItem("Exit");
private TextArea textArea = new TextArea(); public FileDialogTest(){
super("FileDialog");
menu.add(item_1);
menu.add(item_2);
menu.addSeparator();
menu.add(item_3); menuBar.add(menu); item_1.addActionListener(this);
item_2.addActionListener(this);
item_3.addActionListener(this); setLayout(new BorderLayout());
//add(menuBar,BorderLayout.NORTH);MenuBar不能用这种方法添加。
setMenuBar(menuBar);
add(textArea,BorderLayout.CENTER);
textArea.setEditable(false); setSize(400,600);
pack();
setVisible(true);
} public void actionPerformed(ActionEvent e){
if(e.getSource().equals(item_3)){
System.exit(0);
}
else if(e.getSource().equals(item_1)){
FileDialog dialog = new FileDialog(this,"Open File",FileDialog.LOAD);
dialog.setVisible(true);
if(!dialog.getFile().equals(null)){
File file = new File(dialog.getDirectory()+dialog.getFile());
if(file.exists()){
reader(file.toString());
}
else
textArea.setText("the filename:"+dialog.getFile()+"is invalid");
}
dialog.dispose();
}
} public void reader(String file){
textArea.setText(" ");
try{
BufferedReader read = new BufferedReader(new FileReader(file));
String line ;
while(!read.readLine().equals(null)){
line = read.readLine();
textArea.append(line+'\n');
}
read.close();
textArea.setCaretPosition(0);
}catch(FileNotFoundException e){
System.err.println("Error:"+e);
}catch(IOException ef){
System.err.println("Error:"+ef);
}
} public static void main(String [] args){
FileDialogTest fileDialog = new FileDialogTest();
}
}请教,为啥显示出来的文本不完全那?还有,在显示出来的文本最后总有一个“null”。而且,命令提示符窗口中还有一大堆异常提示……为啥?
while((line=read.readLine())!=null){
textArea.append(line+'\n');
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.TextArea;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.File;public class FileDialogTest extends Frame implements ActionListener {
private Menu menu = new Menu("File"); private MenuBar menuBar = new MenuBar(); private MenuItem item_1 = new MenuItem("Open"); private MenuItem item_2 = new MenuItem("Close"); private MenuItem item_3 = new MenuItem("Exit"); private TextArea textArea = new TextArea(); public FileDialogTest() {
super("FileDialog");
menu.add(item_1);
menu.add(item_2);
menu.addSeparator();
menu.add(item_3); menuBar.add(menu); item_1.addActionListener(this);
item_2.addActionListener(this);
item_3.addActionListener(this); setLayout(new BorderLayout());
// add(menuBar,BorderLayout.NORTH);//MenuBar不能用这种方法添加。
//api没有办法 当然就没有这种办法了。这个没什么好问 的
setMenuBar(menuBar);
add(textArea, BorderLayout.CENTER);
textArea.setEditable(false); setSize(400, 600);
pack();
setVisible(true);
} public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(item_3)) {
System.exit(0);
} else if (e.getSource().equals(item_1)) {
FileDialog dialog = new FileDialog(this, "Open File",
FileDialog.LOAD);
dialog.setVisible(true);
if (!(dialog.getFile() == null)) {
File file = new File(dialog.getDirectory() + dialog.getFile());
if (file.exists()) {
reader(file.toString());
} else
textArea.setText("the filename:" + dialog.getFile()
+ "is invalid");
}
dialog.dispose();
}
} public void reader(String file) {
textArea.setText(" ");
try {
BufferedReader read = new BufferedReader(new FileReader(file));
String line;
while ((line = read.readLine()) != null) { textArea.append(line + "\n");
}
read.close();
textArea.setCaretPosition(0);
} catch (FileNotFoundException e) {
System.err.println("Error:" + e);
} catch (IOException ef) {
System.err.println("Error:" + ef);
}
} public static void main(String[] args) {
FileDialogTest fileDialog = new FileDialogTest();
}
}
read.readLine().equals(null) 是永远返回false的
你这里是个死循环,出啦异常才会跳出而且你readline两次,会隔行跳过的(不给line赋值)按楼上的写吧
read.readLine().equals(null) 应该是当你read.readLine()
是个null时,你再调用它的equals必然是,空指针异常
因为equals规则大概为
关于equals方法重写与hashcode方法重写有讲究的:equals方法必须具有的性质:1.自反性2.对称性3.传递性4,一致性,对象没有被修改的请况下多次调用的结果一样5,对非null引用a,对null进行检查一定返回 false