谁能帮我写一个小的Java项目?很简单,写个小说TXT阅读器就行了,至少要用流和集合。你能评论一下吗?
包裹?读者;
进口?Java . awt . *;
进口?Java . awt . event . *;
进口?Java . io . *;
进口?javax . swing . *;
公共?班级?笔记本?{
私人?JFrame?框架;
私人?JTextArea?textArea
私人?JMenuBar?菜单栏;
私人?JMenu?文件,?格式,?搜索,?求助;
私人?JMenuItem?开,?退出;
私人?JMenuItem?字体,?颜色呢?背景,?速度;
私人?JMenuItem?找,?更改为;
私人?JMenuItem?有帮助吗?关于;
私人?布尔?自动换行?=?真实;
私人?字符串?文件名?=?“未命名”;//?文件名
//?私人?文件?currentFile?;
私人?JScrollPane?jsp
私人?JScrollBar?jsb
私人?速度?速度;
私人?字体?font 1;
int?延迟?=?10;
定时器?定时器?=?新的?定时器(延时,?新的?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?evt)?{
jsb.setValue(jsb.getValue()?+?jsb . getunitincrement());
}
});
公共?笔记本()?{
框架?=?新的?JFrame();
Frame.setTitle("未命名");
frame.setLayout(新?BorderLayout());
textArea?=?新的?JTextArea();
textArea.setFont(新?字体("宋体",字体。平平淡淡?18));//?设置默认字体样式字体大小
//?设置?输入?textArea?设置编辑区域
textarea . settext(" ");
textarea . set editable(false);
textarea . setline wrap(autoline wrap);//?设置自动换行
jsp?=?新的?JScrollPane(textArea);//?设置?卷起
jsb?=?JSP . getverticalscrollbar();
jsb.addAdjustmentListener(新?AdjustmentListener()?{
公共?作废?adjustmentValueChanged(adjustment event?e)?{
int?我;
我?=?jsb . getunitincrement();
system . out . println(I);
}
});
frame.add(jsp,?BorderLayout。中心);
//?菜单
菜单栏?=?新的?JMenuBar();
文件?=?新的?JMenu(“文档”);
file . set助记符(' F ');
格式?=?新的?JMenu(" format ");
搜索?=?新的?JMenu("搜索");
救命?=?新的?JMenu(" help ");
menuBar.add(文件);
menuBar.add(格式);
menuBar.add(搜索);
menuBar.add(帮助);
//?文件菜单项
开放?=?新的?JMenuItem("打开...",?关键事件。VK _ O);
退出?=?新的?JMenuItem(" exit ");
file.add(打开);
file.add(退出);
//?格式化菜单项
//?自动线?=?新的?JCheckBoxMenuItem("自动换行");
字体?=?新的?JMenuItem ("font ... ");
颜色?=?新的?JMenuItem ("color ... ");
背景?=?新的?JMenuItem("背景色...");
速度?=?新的?JMenuItem("滚动速度...");
//?format.add(自动换行);
format.add(字体);
format.add(颜色);
format.add(后台);
format.add(速度);
//?搜索菜单项
发现?=?新的?JMenuItem("查找...");
换成?=?新的?JMenuItem("转到...");
search.add(查找);
search . add(change to);
//?帮助菜单项
有帮助吗?=?新的?JMenuItem(" help ");
关于什么?=?新的?JMenuItem(" about ");
help . add(helps);
help.add(关于);
//?设置菜单栏
menuBar.add(文件);
menuBar.add(格式);
menuBar.add(搜索);
menuBar.add(帮助);
frame.setJMenuBar(菜单栏);
//?sped///
速度?=?新的?速度(jsb,?定时器);
font1?=?新的?字体(textArea);
//?调用监听方法
add eventhandler();
//?////
textArea.addMouseListener(新?MouseListener()?{
公共?作废?mouseClicked(MouseEvent?e)?{
如果?(e.getClickCount()?==?2)?{
timer . start();
}
如果?(e.getClickCount()?==?1)?{
timer . stop();
}
}
公共?作废?mouse enter(mouse event?arg0)?{
}
公共?作废?mouseExited(MouseEvent?arg0)?{
}
公共?作废?mousePressed(MouseEvent?arg0)?{
}
公共?作废?mouseReleased(MouseEvent?arg0)?{
}
});
//?听向上和向下键//
textArea.addKeyListener(新?KeyListener()?{
@覆盖
公共?作废?按键(按键事件?arg0)?{
如果?(arg0.getKeyCode()?==?关键事件。VK_UP)?{
jsb.setValue(jsb.getValue()?-?jsb . getunitincrement());
}
如果?(arg0.getKeyCode()?==?关键事件。VK_DOWN)?{
jsb.setValue(jsb.getValue()?+?jsb . getunitincrement());
}
}
公共?作废?keyReleased(KeyEvent?arg0)?{
}
公共?作废?keyTyped(KeyEvent?arg0)?{
}
});
//
textArea.addMouseListener(新?MouseListener()?{
@覆盖
公共?作废?mouseClicked(MouseEvent?e)?{
如果?(e.getClickCount()?==?2)?{
timer . start();
}
如果?(e.getClickCount()?==?1)?{
timer . stop();
}
}
公共?作废?mouse enter(mouse event?arg0)?{
}
公共?作废?mouseExited(MouseEvent?arg0)?{
}
公共?作废?mousePressed(MouseEvent?arg0)?{
}
公共?作废?mouseReleased(MouseEvent?arg0)?{
}
});
}
//?/////////初始化框架//////////////。
受保护?作废?frameInit()?{
维度?d?=?Toolkit.getDefaultToolkit()。getScreenSize();
frame.setSize(d.width,d .身高);
frame . set visible(true);
frame . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);
维度?b?=?frame . getsize();
}
私人?作废?addEventHandler()?{
//?监听文件项目
open.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?e)?{
file open();
jsb . setvalue(0);
}
});
exit.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?e)?{
file exit();
}
});
//?格式菜单的监控
font.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?e)?{
font 1 . add eventhandler();
}
});
color.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?e)?{
format color();
}
});
background.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?e)?{
format background();
}
});
speed.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?e)?{
sped . liser();
}
});
}
//?////////文件项的方法///////////////////////
私人?作废?fileOpen()。{
textarea . settext(" ");
JFileChooser?文件选择器?=?新的?jfile chooser();
file chooser . showopendialog(frame);
文件?文件?=?file chooser . getselectedfile();
如果?(文件?==?空)
返回;
文件名?=?file . getname();//?获取文件名
frame . settitle(file . getabsolutepath());
FileInputStream?fis?=?null
BufferedReader?br?=?null
试试?{
fis?=?新的?FileInputStream(文件);
br?=?新的?BufferedReader(新?InputStreamReader(fis))。
字符串?str?=?null
什么时候?((str?=?br.readLine())?!=?null)?{
textArea.append(str?+?" \ n ");
}
System.out.println("打开成功");
textarea . setcaretposition(0);
}?接住?(IOException?e1)?{
joptionpane . showmessagedialog(frame,?”文件不存在或已损坏”);
}?终于?{
如果?(br?!=?空)
试试?{
br . close();
}?接住?(IOException?e)?{
}
如果?(fis?!=?空)
试试?{
fis . close();
}?接住?(IOException?e)?{
}
}
}
私人?作废?fileExit()?{
int?选项?=?-1;
对象?选项[]?=?{?“是的”,?“没有”?};
选项?=?joptionpane . showoptiondialog(frame,?“要不要退出读书?”,?“退出”,
JOptionPane。是_否_选项,?JOptionPane。问题_留言,?空,
选项,?选项[0]);
切换?(选项)?{
案子?JOptionPane。是_选项:
system . exit(0);
}
}
//?//////////////////////////////////////////////////////////
//?/////////////////格式项的方法////////////////////////
私人?作废?formatColor()。{
//?弹出颜色颜色选择器对话框
颜色?颜色?=?jcolorchooser . showdialog(textArea,?“选择一种颜色”?颜色。黑色);
textarea . set foreground(color);
}
私人?作废?formatBackground()。{
//?弹出颜色颜色选择器对话框
颜色?颜色?=?jcolorchooser . showdialog(textArea,?“选择一种颜色”?颜色。黑色);
textArea.setBackground(颜色);
}
//?////////////////////////////////////////////////////////////
公共?静电?作废?main(字符串?args[])?{
笔记本?nt?=?新的?笔记本();
nt . frame init();
}
}
班级?字体?{
私人?JTextArea?textArea
私人?JButton?好吧。取消;
私人?JComboBox?字体名称,字体大小?fontStyle
图形环境?葛;//?定义系统字体对象
String[]?尺寸?=?{?"8",?"10",?"12",?"14",?"16",?"18",?"20",?"22",?"24",
"26",?"28",?"32",?"36",?"48",?"72",?"96"?};
String[]?风格?=?{?“平平淡淡”,?“大胆”,?“斜体”?};
JFrame?jf?=?新的?JFrame("字体设置");
公共?字体(JTextArea?textArea)?{
this.textArea?=?textArea
JLabel?label1?=?新的?JLabel(
“字体?”);
JLabel?label2?=?新的?JLabel("?字号”);
JLabel?label3?=?新的?JLabel("?风格”);
葛?=?graphics environment . getlocalgraphicsenvironment();//?获取系统字体
String[]?字体名称?=?ge . getavailablefontfamilynames();
字体名称?=?新的?JComboBox(字体名称);
fontSize?=?新的?JComboBox(大小);
fontStyle?=?新的?JComboBox(样式);
好吗?=?新的?JButton(" OK ");
取消?=?新的?JButton(" cancel ");
jf.setLayout(新?BorderLayout());
JPanel?p1?=?新的?JPanel();
JPanel?p2?=?新的?JPanel();
JPanel?p3?=?新的?JPanel();
p 1 . add(label 1);
p 1 . add(label 2);
p 1 . add(label 3);
p2.add(字体名称);
p2 . add(fontSize);
p2 . add(font style);
P3 . add(ok);
p3 .添加(取消);
jf.add(p1,?BorderLayout。北);
jf.add(p2,?BorderLayout。中心);
jf.add(p3,?BorderLayout。南);
jf.setSize(360,?200);
jf.setLocation(300,?200);
JF . set visible(false);
JF . setresizable(false);
//?add eventhandler();
}
作废?addEventHandler()?{
JF . set visible(true);
ok.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?e)?{
字符串?n1?=?(字符串)?font name . getselecteditem();
int?n2?=?font style . getselectedindex();
字符串?n3?=?(字符串)?fontsize . getselecteditem();
textArea.setFont(新?字体(n1,?n2,?integer . parse int(n3)));
JF . set visible(false);
}
});
cancel.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?e)?{
JF . set visible(false);//?
}
});
}
}
班级?速度?器物?ItemListener?{
私人?JScrollBar?jsb
私人?JFrame?jfrm
私人?JLabel?jlb 1;
//?JLabel?jlb2
私人?JButton?jbt
//?私人?JCheckBox?jcheckbox
私人?JComboBox?jcbb
整数?苏都;
定时器?计时器;
私人?整数?msg[]?=?{?1,?10,?18,?36,?48,?66,?80,?90?};
公共?速度(最终?JScrollBar?jsb,?决赛?定时器?定时器)?{
this.jsb?=?jsb
这个计时器?=?计时器;
jfrm?=?新的?JFrame();
jlb1?=?新的?JLabel(“滚动速度”);
jbt?=?新的?JButton(" OK ");
//?jcheckbox?=?新的?JCheckBox("自动滚动");
jcbb?=?新的?JComboBox(msg);
jfrm.setLayout(新?FlowLayout());
jfrm . add(jlb 1);
jfrm . add(jcbb);
//?jfrm . add(jcheckbox);?jfrm . add(jbt);
jfrm . set visible(false);
jcbb . set editable(true);
jfrm . setdefaultcloseoperation(JFrame。HIDE _ ON _ CLOSE);
jfrm . pack();
}
作废?liser()?{
jfrm . set visible(true);
//?//////监控复选框/////////////////////////////////////////////////////////
jcbb . additem listener(this);
/*
?*?jcbb.addActionListener(新?ActionListener(){?公共?空的
?*?actionPerformed(ActionEvent?e)?{
?*?jcbb . setselectedindex(jcbb . getselectedindex());?}});
?*/
//?///////听按钮////////////////////////////////////////
jbt.addActionListener(新?ActionListener()?{
公共?作废?actionPerformed(ActionEvent?arg0)?{
jfrm . set visible(false);
}
});
//?////////////////////////////////////
/*
?*?jcheckbox.addItemListener(新?ItemListener(){?公共?空的
?*?itemStateChanged(ItemEvent?e)?{?if(jcheckbox . is selected()= = false){
?*?system . out . println(" false ");?timer . stop();?}
?*?if(jcheckbox . is selected()= = true){?timer . start();?}?}}?);
?*/
}
@覆盖
公共?作废?itemStateChanged(ItemEvent?arg0)?{
苏都?=?(整数)?jcbb . getselecteditem();
//?jcbb . setselecteditem(msg);//jcbb.updateUI()?;
jsb . setunitincrement(sudu . int value());
}
}