文本阅读器java源程序.docx
《文本阅读器java源程序.docx》由会员分享,可在线阅读,更多相关《文本阅读器java源程序.docx(13页珍藏版)》请在冰豆网上搜索。
文本阅读器java源程序
文本阅读器java源程序
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
publicclassNotebook{
privateJFrameframe;
privateJTextAreatextArea;
privateJMenuBarmenuBar;
privateJMenufile,format,search,help;
privateJMenuItemopen,exit;
privateJMenuItemfont,color,background,speed;
privateJMenuItemfind,changeto;
privateJMenuItemhelps,about;
privateBooleanautoLineWrap=true;
privateStringfileName="未命名";//文件名
//privateFilecurrentFile;
privateJScrollPanejsp;
privateJScrollBarjsb;
privateSpeedsped;
privatefontfont1;
intdelay=10;
Timertimer=newTimer(delay,newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jsb.setValue(jsb.getValue()+jsb.getUnitIncrement());
}
});
publicNotebook(){
frame=newJFrame();
frame.setTitle("未命名");
frame.setLayout(newBorderLayout());
textArea=newJTextArea();
textArea.setFont(newFont("宋体",Font.PLAIN,18));//设置默认字体样式字号
//setinputtextArea设置编辑区
textArea.setText("");
textArea.setEditable(false);
textArea.setLineWrap(autoLineWrap);//设置自动换行
jsp=newJScrollPane(textArea);//setScroll
jsb=jsp.getVerticalScrollBar();
jsb.addAdjustmentListener(newAdjustmentListener(){
publicvoidadjustmentValueChanged(AdjustmentEvente){
inti;
i=jsb.getUnitIncrement();
System.out.println(i);
}});
frame.add(jsp,BorderLayout.CENTER);
//菜单
menuBar=newJMenuBar();
file=newJMenu("文件");
file.setMnemonic('F');
format=newJMenu("格式");
search=newJMenu("搜索");
help=newJMenu("帮助");
menuBar.add(file);
menuBar.add(format);
menuBar.add(search);
menuBar.add(help);
//文件菜单项
open=newJMenuItem("打开...",KeyEvent.VK_O);
exit=newJMenuItem("退出");
file.add(open);
file.add(exit);
//格式菜单项
//autoLine=newJCheckBoxMenuItem("自动换行");
font=newJMenuItem("字体...");
color=newJMenuItem("颜色...");
background=newJMenuItem("背景颜色...");
speed=newJMenuItem("滚屏速度...");
//format.add(autoLine);
format.add(font);
format.add(color);
format.add(background);
format.add(speed);
//搜索菜单项
find=newJMenuItem("查找...");
changeto=newJMenuItem("转到...");
search.add(find);
search.add(changeto);
//帮助菜单项
helps=newJMenuItem("帮助");
about=newJMenuItem("关于");
help.add(helps);
help.add(about);
//设置菜单条
menuBar.add(file);
menuBar.add(format);
menuBar.add(search);
menuBar.add(help);
frame.setJMenuBar(menuBar);
//sped///
sped=newSpeed(jsb,timer);
font1=newfont(textArea);
//调用监听方法
addEventHandler();
//////
textArea.addMouseListener(newMouseListener(){
publicvoidmouseClicked(MouseEvente){
if(e.getClickCount()==2){
timer.start();
}
if(e.getClickCount()==1){
timer.stop();
}
}
publicvoidmouseEntered(MouseEventarg0){
}
publicvoidmouseExited(MouseEventarg0){
}
publicvoidmousePressed(MouseEventarg0){
}
publicvoidmouseReleased(MouseEventarg0){
}});
//监听上下键//
textArea.addKeyListener(newKeyListener(){
@Override
publicvoidkeyPressed(KeyEventarg0){
if(arg0.getKeyCode()==KeyEvent.VK_UP){
jsb.setValue(jsb.getValue()-jsb.getUnitIncrement());
}
if(arg0.getKeyCode()==KeyEvent.VK_DOWN){
jsb.setValue(jsb.getValue()+jsb.getUnitIncrement());
}
}
publicvoidkeyReleased(KeyEventarg0){}
publicvoidkeyTyped(KeyEventarg0){
}});
//
textArea.addMouseListener(newMouseListener(){
@Override
publicvoidmouseClicked(MouseEvente){
if(e.getClickCount()==2){
timer.start();
}
if(e.getClickCount()==1){
timer.stop();
}
}
publicvoidmouseEntered(MouseEventarg0){
}
publicvoidmouseExited(MouseEventarg0){
}
publicvoidmousePressed(MouseEventarg0){
}
publicvoidmouseReleased(MouseEventarg0){
}});
}
///////////初始化frame////////////////
protectedvoidframeInit(){
Dimensiond=Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize(d.width,d.height);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimensionb=frame.getSize();
}
privatevoidaddEventHandler(){
//文件项的监听
open.addActionListener(newActionListener()
{publicvoidactionPerformed(ActionEvente){fileOpen();jsb.setValue(0);}}
);
exit.addActionListener(newActionListener()
{publicvoidactionPerformed(ActionEvente){fileExit();}}
);
//格式菜单的监听
font.addActionListener(newActionListener()
{publicvoidactionPerformed(ActionEvente){font1.addEventHandler();}}
);
color.addActionListener(newActionListener()
{publicvoidactionPerformed(ActionEvente){formatColor();}}
);
background.addActionListener(newActionListener()
{publicvoidactionPerformed(ActionEvente){formatBackgroun
d();}}
);
speed.addActionListener(newActionListener()
{publicvoidactionPerformed(ActionEvente){sped.liser();}}
);
}
//////////文件项的方法/////////////////////////
privatevoidfileOpen(){
textArea.setText("");
JFileChooserfileChooser=newJFileChooser();
fileChooser.showOpenDialog(frame);
Filefile=fileChooser.getSelectedFile();
if(file==null)return;
fileName=file.getName();//获得文件名
frame.setTitle(file.getAbsolutePath());
FileInputStreamfis=null;
BufferedReaderbr=null;
try{
fis=newFileInputStream(file);
br=newBufferedReader(newInputStreamReader(fis));
Stringstr=null;
while((str=br.readLine())!
=null){
textArea.append(str+"\n");
}
System.out.println("打开成功");
textArea.setCaretPosition(0);
}catch(IOExceptione1){
JOptionPane.showMessageDialog(frame,"文件不存在或已被损坏");
}finally{
if(br!
=null)try{br.close();}catch(IOExceptione){}
if(fis!
=null)try{fis.close();}catch(IOExceptione){}
}
}
privatevoidfileExit(){
intoption=-1;
Objectoptions[]={"Yes","No"};
option=JOptionPane.showOptionDialog(frame,"是否退出阅读?
","exit",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,options[0]);
switch(option){
caseJOptionPane.YES_OPTION:
System.exit(0);
caseJOptionPane.NO_OPTION:
return;
default:
System.exit(0);
}
}
////////////////////////////////////////////////////////////
/////////////////格式项的方法/////////////////////////////////
privatevoidformatColor(){
//弹出颜色色选择器对话框
Colorcolor=JColorChooser.showDialog(textArea,"选择颜色",Color.BLACK);
textArea.setForeground(color);
}
privatevoidformatBackground(){
//弹出颜色色选择器对话框
Colorcolor=JColorChooser.showDialog(textArea,"选择颜色",Color.BLACK);
textArea.setBackground(color);
}
//////////////////////////////////////////////////////////////
publicstaticvoidmain(Stringargs[]){
Notebooknt=newNotebook();
nt.frameInit();
}
}
classfont{
privateJTextAreatextArea;
privateJButtonok,cancel;
privateJComboBoxfontName,fontSize,fontStyle;
GraphicsEnvironmentge;//定义系统字体对象
String[]size={"8","10","12","14","16","18","20","22","24","26","28","32","36","48","72","96"};
String[]style={"PLAIN","BOLD","ITALIC"};
JFramejf=newJFrame("字体设置");
publicf
ont(JTextAreatextArea){
this.textArea=textArea;
JLabellabel1=newJLabel("字体");
JLabellabel2=newJLabel("字号");
JLabellabel3=newJLabel("样式");
ge=GraphicsEnvironment.getLocalGraphicsEnvironment();//获取系统字体
String[]fontname=ge.getAvailableFontFamilyNames();
fontName=newJComboBox(fontname);
fontSize=newJComboBox(size);
fontStyle=newJComboBox(style);
ok=newJButton("确定");
cancel=newJButton("取消");
jf.setLayout(newBorderLayout());
JPanelp1=newJPanel();
JPanelp2=newJPanel();
JPanelp3=newJPanel();
p1.add(label1);
p1.add(label2);
p1.add(label3);
p2.add(fontName);
p2.add(fontSize);
p2.add(fontStyle);
p3.add(ok);
p3.add(cancel);
jf.add(p1,BorderLayout.NORTH);
jf.add(p2,BorderLayout.CENTER);
jf.add(p3,BorderLayout.SOUTH);
jf.setSize(360,200);
jf.setLocation(300,200);
jf.setVisible(false);
jf.setResizable(false);
//addEventHandler();
}
voidaddEventHandler(){
jf.setVisible(true);
ok.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringn1=(String)fontName.getSelectedItem();
intn2=fontStyle.getSelectedIndex();
Stringn3=(String)fontSize.getSelectedItem();
textArea.setFont(newFont(n1,n2,Integer.parseInt(n3)));
jf.setVisible(false);
}
});
cancel.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
jf.setVisible(false);//
}
}
);
}
}
classSpeedimplementsItemListener{
privateJScrollBarjsb;
privateJFramejfrm;
privateJLabeljlb1;
//JLabeljlb2;
privateJButtonjbt;
//privateJCheckBoxjcheckbox;
privateJComboBoxjcbb;
Integersudu;
Timertimer;
privateIntegermsg[]={1,10,18,36,48,66,80,90};
publicSpeed(finalJScrollBarjsb,finalTimertimer){
this.jsb=jsb;
this.timer=timer;
jfrm=newJFrame();
jlb1=newJLabel("滚屏速度");
jbt=newJButton("确定");
//jcheckbox=newJCheckBox("自动滚屏");
jcbb=newJComboBox(msg);
jfrm.setLayout(newFlowLayout());
jfrm.add(jlb1);
jfrm.add(jcbb);
//jfrm.add(jcheckbox);
jfrm.add(jbt);
jfrm.setVisible(false);
jcbb.setEditable(true);
jfrm.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
jfrm.pack();
}
voidliser(){
jfrm.setVisible(true);
///////监听复选框///////////////////////////
jcbb.addItemListener(this);
/*jcbb.addActio
nListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
jcbb.setSe