最近用java写的swing源代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Notepad3
{
public static void main(String [] args)
{
Window mainWin = new Window("New - Notepad3");
}
}
class Window extends JFrame implements ActionListener
{
JMenuBar menubar;
JTextArea mainText;
JFileChooser openFile;
JFileChooser saveFile;
JPopupMenu contextMenu;
JMenuItem popupcopy, popupcut, popuppaste, popupdel;
JMenu file;
JMenuItem New, Open, Save, SaveAs, NewWindow, Encode, Exit;
JMenu edit;
JMenuItem redo, undo, cut, copy, paste, del, find, findNext, replace;
String findStr = null; // 要查找的字符串-findStr
JMenu help;
JMenuItem about;
JMenu view;
JMenuItem font, linenum, wordCounts;
JCheckBoxMenuItem wordWrap;
//mainText上方的按钮,没有用处的
JButton buttonRun, buttonRun2;
Icon icon1;
//在mainText下面添加状态栏;
JLabel wordCount;
Window(String s)
{
setTitle(s);
setBounds(100,100,800,600);
setVisible(true);
setResizable(true);
{
//添加工具栏
menubar = new JMenuBar();
//添加菜单-文件
file = new JMenu("File");
New = new JMenuItem("New", new ImageIcon("new.gif"));
Open = new JMenuItem("Open", new ImageIcon("open.gif"));
Save = new JMenuItem("Save", new ImageIcon("save.gif"));
SaveAs = new JMenuItem("Save as", new ImageIcon("saveas.gif"));
NewWindow= new JMenuItem("New Window", new ImageIcon("newwindow.gif"));
Encode = new JMenuItem("Encode", new ImageIcon("encode.gif"));
Exit= new JMenuItem("Exit", new ImageIcon("exit.gif"));
New.setMnemonic('N');//为“新建”设置快捷键Ctrl+N
New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
Open.setAccelerator(KeyStroke.getKeyStroke('O'));
//menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
openFile = new JFileChooser("d:/"); //打开文件夹的对象
file.add(New);
file.add(Open);
file.addSeparator();
file.add(Save);
file.add(SaveAs);
file.addSeparator();
file.add(NewWindow);
file.add(Encode);
file.add(Exit);
New.addActionListener(this);
Open.addActionListener(this);
Save.addActionListener(this);
//添加菜单-编辑
edit= new JMenu("Edit");
redo = new JMenuItem("Redo");
undo = new JMenuItem("Undo");
cut = new JMenuItem("Cut");
copy = new JMenuItem("Copy");
paste = new JMenuItem("Paste");
del= new JMenuItem("Delete");
find = new JMenuItem("Find");
findNext = new JMenuItem("FindNext");
replace = new JMenuItem("Replace");
edit.add(redo);
edit.add(undo);
edit.addSeparator();
edit.add(cut);
edit.add(copy);
edit.add(paste);
edit.add(del);
edit.addSeparator();
edit.add(find);
edit.add(findNext);
edit.add(replace);
copy.addActionListener(this);
cut.addActionListener(this);
paste.addActionListener(this);
del.addActionListener(this);
find.addActionListener(this);
findNext.addActionListener(this);
replace.addActionListener(this);
//添加菜单-View
view = new JMenu("View");
font = new JMenuItem("Font");
wordWrap = new JCheckBoxMenuItem("Word Wrap", false);
linenum = new JMenuItem("Line Numbers");
wordCounts= new JMenuItem("Word Counts");
view.add(font);
view.add(wordWrap);
view.addSeparator();
view.add(linenum);
view.add(wordCounts);
wordCounts.addActionListener(this);
wordWrap.addActionListener(this);
//添加菜单-Help
help = new JMenu("Help");
about = new JMenuItem("About");
help.add(about);
about.addActionListener(this);
//添加到菜单栏
menubar.add(file);
menubar.add(edit);
menubar.add(view);
menubar.add(help);
setJMenuBar(menubar);
}
//添加文本区域
mainText = new JTextArea("haha");
//添加文本区域到窗口,并增加滚动条
add(new JScrollPane(mainText), BorderLayout.CENTER);
//右键显示的监听事件
mainText.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
if(e.getModifiers()==InputEvent.BUTTON3_MASK)
contextMenu.show(mainText,e.getX(),e.getY());
}
});
//添加右键菜单项目
JPopupMenu contextMenu = new JPopupMenu();
popupcopy = new JMenuItem("copy");
popupcut = new JMenuItem("cut");
popuppaste = new JMenuItem("paste");
popupdel = new JMenuItem("Delete");
contextMenu.add(popupcut);
contextMenu.add(popupcopy);
contextMenu.add(popuppaste);
contextMenu.add(popupdel);
popupcopy.addActionListener(this);
popupcut.addActionListener(this);
popuppaste.addActionListener(this);
popupdel.addActionListener(this);
icon1= new ImageIcon("a.jag");
buttonRun = new JButton(icon1);
buttonRun.setMnemonic('d');
add(buttonRun,BorderLayout.NORTH);
buttonRun.addActionListener(this);
wordCount = new JLabel("本文共" + mainText.getText().length() + "个字");
add(wordCount,BorderLayout.SOUTH);
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void actionPerfoemed(ActionEvent e)
{
int i=0;
i=(i+1)%2;
if(i==1)
buttonRun.setIcon(icon1);
}
//文本区域的监听事件
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==copy || e.getSource()==popupcopy)
mainText.copy();
else if (e.getSource()==cut || e.getSource()==popupcut)
mainText.cut();
else if (e.getSource()==paste || e.getSource()==popuppaste)
mainText.paste();
else if (e.getSource()==wordCounts)
wordCount.setText("本文共" + mainText.getText().length() + "个字");
else if (e.getSource()==about)
JOptionPane.showConfirmDialog(this, "\n Power By Yantze\n mail:yantze@126.com", "关于", JOptionPane.CLOSED_OPTION );
else if (e.getSource()==wordWrap)
mainText.setLineWrap(!mainText.getLineWrap());
else if (e.getSource()==del || e.getSource() == popupdel)
mainText.replaceRange("",mainText.getSelectionStart(),mainText.getSelectionEnd()); //删除选中的文本
else if (e.getSource()==find || e.getSource()==findNext)//实现查找和查找下一个的功能
{
if(findStr==null || e.getSource()==find )
{
findStr= JOptionPane.showInputDialog(this, "请输入要找的字符串(Regex-open)!");
if ((findStr!=null)&&!mainText.equals(""))
{
int position =mainText.getText().indexOf(findStr);
if(position!=-1)
{
mainText.setSelectionStart(position);
mainText.setSelectionEnd(position + findStr.length());
}
else JOptionPane.showMessageDialog(this, "未查找到字符串!");
}
}
else
{
if ((findStr!=null)&&!findStr.equals(""))
{
int position = mainText.getText().indexOf(findStr, mainText.getSelectionStart()+1) ;
if(position!=-1){
mainText.setSelectionStart(position);
mainText.setSelectionEnd(position+findStr.length());
}
else JOptionPane.showMessageDialog(this, "不存在要查找的字符串!");
}
}
}
else if(e.getSource()==replace){
findStr = null;
String replaceStr;
String str;
findStr= JOptionPane.showInputDialog(this, "请输入替换的字符串!(Regex-open)");
if ((findStr!=null)&&!mainText.equals("")){
int position =mainText.getText().indexOf(findStr);
if(position!=-1){
mainText.setSelectionStart(position);
mainText.setSelectionEnd(position+findStr.length());
replaceStr = JOptionPane.showInputDialog(this,"请输入替换的字符串!");
if(replaceStr!=null){
str = mainText.getText().replace(findStr, replaceStr);
mainText.setText(str);
}
}
else JOptionPane.showMessageDialog(this, "没有你要替换的字符串");
}
else
JOptionPane.showMessageDialog(this, "没有你想替换的的字符!");
}
else if (e.getSource()==New)
{
int n=JOptionPane.showConfirmDialog(this,"在新建之前,想保存文件吗?","新建文档",JOptionPane.YES_NO_CANCEL_OPTION);
if(n == JOptionPane.YES_OPTION)
{
mainText.setText(null);
}
if(n == JOptionPane.NO_OPTION)
{
mainText.setText(null);
}
}
else if (e.getSource()==Open)
{
int n = openFile.showOpenDialog(null);
if (n == JFileChooser.APPROVE_OPTION) //这段代码用到了java.io.*;
{
File file = openFile.getSelectedFile();
try
{
FileReader readFile = new FileReader(file);
BufferedReader in = new BufferedReader(readFile);
String s = null;
while ((s=in.readLine()) != null)
mainText.append(s + "\n");
}
catch(IOException ee){}
}
}
else if (e.getSource()==Save)
{
/*
saveFile = new JFileChooser();
saveFile .setApproveButtonText("确定");
saveFile .setDialogTitle("另存为");
int result = saveFile.showSaveDialog(this);
if (result == JFileChooser.CANCEL_OPTION) {
statusLabel.setText("没有选择任何文件");
return;
}
File saveFileName = fileChooser.getSelectedFile();
if (saveFileName == null || saveFileName.getName().equals(""))
JOptionPane.showMessageDialog(this, "不合法的文件名", "不合法的文件名",
JOptionPane.ERROR_MESSAGE);
else {
try {
FileWriter fw = new FileWriter(saveFileName);
BufferedWriter bfw = new BufferedWriter(fw);
bfw.write(mainText.getText(), 0, mainText.getText().length());
bfw.flush();
fw.close();
isNewfile = false;
file = saveFileName;
oldValue = tex.getText();
statusLabel.setText(" 当前打开文件:" + saveFileName.getAbsoluteFile());
} catch (IOException ioException) {
}
}
*/
try{
int result = saveFile.showSaveDialog(this);
saveFile.setApproveButtonText("确定");
File save = saveFile.getSelectedFile();
FileWriter writeOut = new FileWriter(save);
writeOut.write(mainText.getText());
writeOut.flush();
writeOut.close();
}catch (IOException eee){
System.out.println("Error writing file");
}
}
}
}
效果图: