今天整理其他的博客,找到自己大学期间做的一个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