永发信息网

java编写文件查看器的问题

答案:2  悬赏:0  手机版
解决时间 2021-06-07 05:05

用java编写一个文件查看器,要求实现浏览打开文件、判断文件类型是否为txt不是给出提示(最好是Windows系统提示那种弹出提示框)、能显示中文、清空当先显示内容、退出等功能。

我这有一个程序,只实现了浏览打开退出功能,中文显示为乱码,请高手帮忙添加判断文件类型、清空功能、并解决中文显示乱码问题,浏览打开功能部分可根据需要进行删改。

package javatest;

import java.awt.FileDialog;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.RandomAccessFile;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
public class MyCompiler extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L;
JPanel p;
JTextArea t;
JScrollPane s;
FileDialog fd;
JMenuBar menubar;
JMenu file,edit;
JMenuItem file1,file2,file3;
public static void main(String args[]){
MyCompiler f=new MyCompiler();
f.go();
}
@SuppressWarnings({ "deprecation", "deprecation" })
public void go(){
// fr=new JFrame("MyCompiler");
this.setTitle("文本文件查看器");
t=new JTextArea();
p=new JPanel();
s=new JScrollPane(t);
s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
s.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

s.setBorder(new TitledBorder("显示区"));

menubar=new JMenuBar();
file=new JMenu("文件(F)");
edit=new JMenu("编辑(E)");
file1=new JMenuItem("打开");
file1.addActionListener(this);
file2=new JMenuItem("退出");
file2.addActionListener(this);
file3=new JMenuItem("清空");
file3.addActionListener(this);
file.add(file1);
file.add(file2);
edit.add(file3);
menubar.add(file);
menubar.add(edit);
p.setLayout(new GridLayout(1,1));

setJMenuBar(menubar);
p.add(s);
add(p);
setSize(500,500);
setVisible(true);
show();
}
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent e){
// byte b[]=new byte[888];
if(e.getActionCommand()=="打开"){
fd=new FileDialog(this,"打开",FileDialog.LOAD);
fd.setDirectory(".");
fd.show();
try{
File myfile=new File(fd.getDirectory(),fd.getFile());
RandomAccessFile raf=new RandomAccessFile(myfile,"r");
while(raf.getFilePointer()<raf.length()){
t.append(raf.readLine()+"\n");
}
}catch (Exception ie) {
System.out .println(e.toString());
}}
if(e.getActionCommand()=="退出"){
dispose();
System.exit(0);
}
}

}

最佳答案

我日,因为代码和楼上比较像,qq竟然不让我发


RandomAccessFile的readLine不完全支持Unicode,所以你的代码不能显示正确的中文

全部回答

import java.awt.Dialog; import java.awt.FileDialog; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.RandomAccessFile;

import javax.sound.midi.ShortMessage; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.border.TitledBorder;

public class MyCompiler extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; JPanel p; JTextArea t; JScrollPane s; FileDialog fd; JMenuBar menubar; JMenu file, edit; JMenuItem file1, file2, file3;

public static void main(String args[]) { MyCompiler f = new MyCompiler(); f.go(); }

@SuppressWarnings( { "deprecation", "deprecation" }) public void go() { // fr=new JFrame("MyCompiler"); this.setTitle("文本文件查看器"); t = new JTextArea(); p = new JPanel(); s = new JScrollPane(t); s.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); s.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);

s.setBorder(new TitledBorder("显示区"));

menubar = new JMenuBar(); file = new JMenu("文件(F)"); edit = new JMenu("编辑(E)"); file1 = new JMenuItem("打开"); file1.addActionListener(this); file2 = new JMenuItem("退出"); file2.addActionListener(this); file3 = new JMenuItem("清空"); file3.addActionListener(this); file.add(file1); file.add(file2); edit.add(file3); menubar.add(file); menubar.add(edit); p.setLayout(new GridLayout(1, 1));

file3.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub t.setText(""); }}); setJMenuBar(menubar); p.add(s); add(p); setSize(500, 500); setVisible(true); show(); }

@SuppressWarnings("deprecation") public void actionPerformed(ActionEvent e) { // byte b[]=new byte[888]; if (e.getActionCommand() == "打开") { fd = new FileDialog(this, "打开", FileDialog.LOAD); fd.setDirectory("."); fd.show(); File myfile = new File(fd.getDirectory(), fd.getFile()); System.out.println(myfile.getName()); String tmpName = myfile.getName().substring(myfile.getName().lastIndexOf(".") + 1, myfile.getName().length()); System.out.println(tmpName); if(!tmpName.equals("txt")) { JOptionPane.showMessageDialog(null,"文件类型错误","错误",JOptionPane.ERROR_MESSAGE); } else { try { RandomAccessFile raf = new RandomAccessFile(myfile, "r"); while (raf.getFilePointer() < raf.length()) { t.append(raf.readLine().toString() + "\n"); } } catch (Exception ie) { System.out.println(e.toString()); } } } if (e.getActionCommand() == "退出") { dispose(); System.exit(0); } }

} 还有个编码那个没搞好··你看看先

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
手机QQ和手机网用户怎么关 电脑上可以关吗?
湖滨区三门峡中国体育彩票这个地址在什么地方
我家三口人,月收入6000,应该如何理财?请回
猪仔乔会死吗?
高声望qq秀怎么弄的?
什么是细胞?
QQT(堂)封除外挂举报错误就不会有效果了吧?
我们家电脑一按y就关机
香坊区哈尔滨好友网吧我想知道这个在什么地方
谁知道可以怎么测试缘份啊?
谁帮忙下想好看的分组
我只要一吃辣的,香的东西,痘痘就占领我的整
女人叫男人“老公”的那种感觉当男人这样子叫
M怎么不能换话费了??
QQ三国与跑环有关问题。
推荐资讯
爱情最高级是几级
怎么快速给幻神升级?
QQ华夏战魂强效技能怎么才好上?
男人喜欢女人的什么呢
1马力等于多少KW?
一起玩了几年的一对朋友,花了10000多块点的情
我要在一个月内把运球练好有什么方法么?
Adobe acrobat激活码是2388-5337-1487-4307-3
怎样换QQ相这的名字
非常感谢您的帮忙
盘龙完整版的下载地址
我这个电脑换个1G的内寸还卡吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?