今天整理其他的博客,找到自己大学期间做的一个Swing版的记事本,很简单,但是觉得值得留个纪念,就贴这里了。
界面
如下:
源代码
如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.JPopupMenu;
import javax.swing.border.CompoundBorder;
public class NotePad3 extends JFrame{
JFileChooser jfc=new JFileChooser(){
public boolean accept(File f) {
return f.isDirectory()||f.getName().endsWith(".txt")||f.isDirectory()||f.getName().endsWith(".java");
}
};
final JTextArea jta;
JPopupMenu jpm;
public NotePad3(){
final JFrame f=new JFrame("简易记事本");
jpm=new JPopupMenu();
f.setLocation(100,100);
f.setSize(400,450);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jta=new JTextArea();
f.add(new JScrollPane(jta));
JMenuBar jmb=new JMenuBar();
JMenu jm1=new JMenu("文件");
JMenu jm2=new JMenu("编辑");
JMenu jm3=new JMenu("关于");
final JMenuItem jmt1=new JMenuItem("新建");
final JMenuItem jmt2=new JMenuItem("打开");
final JMenuItem jmt3=new JMenuItem("保存");
final JMenuItem jmt4=new JMenuItem("退出");
final JMenuItem jmt5=new JMenuItem("复制");
final JMenuItem jmt6=new JMenuItem("剪切");
final JMenuItem jmt7=new JMenuItem("粘贴");
final JMenuItem jmt9=new JMenuItem("全选");
final JMenuItem jmt8=new JMenuItem("信息");
jm1.add(jmt1);//新建
jmt1.setToolTipText("用于重新建立文本");
jmt1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.setText("");
}
});
jm1.add(jmt2);//打开
jmt2.setToolTipText("请打开文件");
jmt2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int result=jfc.showOpenDialog(NotePad3.this);
// FileDialog fd=new FileDialog(f, "请打开文件", FileDialog.LOAD);
// fd.setVisible(true);
if(result!=jfc.APPROVE_OPTION)return;
try{
FileInputStream fis=new FileInputStream(jfc.getSelectedFile());
byte[] buf=new byte[10*1024];
int len=fis.read(buf);
jta.append(new String (buf,0,len));
fis.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
});
jm1.add(jmt3);//保存
jmt3.setToolTipText("保存当前文本");
jmt3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int save=jfc.showSaveDialog(NotePad3.this);
//FileDialog fd=new FileDialog(f,"请保存文件",FileDialog.SAVE);
//String filestr=fd.getDirectory()+fd.getFile();
//fd.setVisible(true);
if(save!=jfc.APPROVE_OPTION)return;
//if(filestr!=null)
try{
FileWriter fw=new FileWriter(jfc.getSelectedFile());
fw.write(jta.getText());
fw.close();
}
catch(Exception ee){
ee.printStackTrace();
}
}
});
jm1.add(jmt4);//退出
jmt4.setToolTipText("退出本程序");
jmt4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
jm2.add(jmt5);//复制
jmt5.setToolTipText("复制文本");
jmt5.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.copy();
}
});
jm2.add(jmt6);//剪切
jmt6.setToolTipText("剪切选中文本");
jmt6.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.cut();
}
});
jm2.add(jmt7);//粘贴
jmt7.setToolTipText("粘贴文本");
jmt7.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.paste();
}
});
jm2.add(jmt9);//全选
jmt9.setToolTipText("选中当前全部文本");
jmt9.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.selectAll();
}
});
jm3.add(jmt8);//信息
jmt8.setToolTipText("查看记事本信息");
jmt8.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,"简易记事本,凯尔特制作");
}
});
//针对弹出菜单进行设置(重复较多)
JMenuItem jmt10=new JMenuItem("复制");
jmt10.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.copy();
}
});
JMenuItem jmt11=new JMenuItem("剪切");
jmt11.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.cut();
}
});
JMenuItem jmt12=new JMenuItem("粘贴");
jmt12.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.paste();
}
});
JMenuItem jmt13=new JMenuItem("全选");
jmt13.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jta.selectAll();
}
});
JMenuItem jmt14=new JMenuItem("关于");
jmt14.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,"简易记事本,凯尔特制作");
}
});
jpm.add(jmt10);
jpm.add(jmt11);
jpm.add(jmt12);
jpm.addSeparator();
jpm.add(jmt13);
jpm.addSeparator();
jpm.add(jmt14);
jta.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent eee){
Tanchu(eee);
}
});
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm3);
f.setJMenuBar(jmb);
f.setVisible(true);
}
//弹出菜单设置
private void Tanchu(MouseEvent eee){
if(eee.isPopupTrigger()){
jpm.show(jta,eee.getX(),eee.getY());
}
}
public static void main(String args[]){
NotePad3 np2=new NotePad3();
}
}
文件名:NotePad3.java
- 大小: 10.7 KB
分享到:
相关推荐
zemax编程语言.pdf
四年专业英语单词快速记忆经验,一年时间精心打造“编程语言快速记忆手册”,第一版的编程语言快速记忆手册,里面共收录了4345个和编程,计算机相关的英语单词,并给出了理解学单词里的,独特的英语单词快速记忆法。...
分享一下编程语言的排行,帮助大家了解当前形势
编程语言Python算法集大全 ,学习进步阶梯必备。编程语言Python算法集大全 ,学习进步阶梯必备。编程语言Python算法集大全 ,学习进步阶梯必备。编程语言Python算法集大全 ,学习进步阶梯必备。编程语言Python算法集...
编程语言原理(第10版 编程语言原理
编程语言排行榜编程语言排行榜编程语言排行榜编程语言排行榜编程语言排行榜编程语言排行榜编程语言排行榜编程语言排行榜编程语言排行榜编程语言排行榜编程语言排行榜
编程语言的发展趋势及未来方向 对于编程语言来说,现在出现了许多有趣的东西,也是令人激动的时刻。在过去,大约1995-2005年,的确可以说是一个有些特别的编程语言的黄金时期。你知道,当Java出现的时候,编程语言的...
自制编程语言基于C语言郑钢源代码
器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有...
《自制编程语言》相关资料1
编程语言:应用和解释( PLAI)是由 Shriram Krishnamurthi编写的免费编程语言教科书。在30多所大学和几所高中使用。[ 引用需要 ] 这本书不同于大多数其他编程语言文本,试图结合两种不同风格的编程语言教育:一种是...
IOBE世界编程语言排行榜展现了编程语言的流行趋势。每个月,都有最新的数据被更新。这份排行榜的数据取样来源于互联网上富有经验的程序员、商业应用、著名的搜索引擎(诸如谷歌、 MSN 、雅虎)的关键字排名、 Alexa ...
《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件...
SIEMENS STEP7编程语言与使用技巧
各种编程语言集合各种编程语言集合各种编程语言集合各种编程语言集合各种编程语言集合各种编程语言集合
excel vba 编程语言命令
所见过的13种最为奇葩的编程语言,无聊之余的谈资. 不喜勿喷
Dart编程语言.pdf(高清版)。 本书共9章,前6章是基础,后3章是进阶进行了深入的讲解,本书内容较为深入,不适合初学者,最好接触过其他编程语言。
FX2N系列PLC基本指令及编程编程语言的特点.ppt
该资料主要包括常用一些编程语言的API与教程,包括java,c,c++,css3,html5等