这是一个用JAVA编辑的写字板程序,但不知道为什么不能实现"查找"和"查找下一个功能",麻烦各位大虾看一下.

原创 2005年05月31日 19:13:00

//JNotepadTest.java
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import java.awt.datatransfer.*;
import java.io.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;

public class JNotepadTest extends JPanel
{
//变量定义
JTextArea jta = new JTextArea("", 24, 40);
JScrollPane jsp = new JScrollPane(jta);
//菜单条
JMenuBar jmb = new JMenuBar();
JMenu file = new JMenu("文件");
JMenu edit = new JMenu("编辑");
JMenu search = new JMenu("查找");
//工具条
JToolBar toolBar = new JToolBar();
//菜单内容
JMenuItem jmi;
//实例化剪切板
Clipboard clipbd = getToolkit().getSystemClipboard();
//打印功能
PrinterJob prtMe = PrinterJob.getPrinterJob();
String text = "";
//构造函数
public JNotepadTest()
{
class newL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jta.setDocument(new PlainDocument());
}
}
//打开功能
class openL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JFileChooser fc = new JFileChooser();
int returnVal = fc.showDialog(JNotepadTest.this, "打开");
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String file = fc.getSelectedFile().getPath();
if(file == null)
{
return;
}
//读取文件
try
{
Reader in = new FileReader(file);
char[] buff = new char[4096];
int nch;
while((nch = in.read(buff, 0, buff.length)) != -1)
{
jta.setDocument(new PlainDocument());
jta.append(new String(buff, 0, nch));
}
}
catch (IOException io)
{
System.err.println("IOException: " + io.getMessage());
}
}
else
{
return;
}
}
}
//保存文件
class saveL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JFileChooser fc = new JFileChooser();
int returnVal = fc.showSaveDialog(JNotepadTest.this);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String savefile = fc.getSelectedFile().getPath();
if(savefile == null)
{
return;
}
else
{
String docToSave = jta.getText();
if(docToSave != null)
{
FileOutputStream fstrm = null;
BufferedOutputStream ostrm = null;
try
{
fstrm = new FileOutputStream(savefile);
ostrm = new BufferedOutputStream(fstrm);
byte[] bytes = null;
try
{
bytes = docToSave.getBytes();
}
catch(Exception e1)
{
e1.printStackTrace();
}
ostrm.write(bytes);
}
catch(IOException io)
{
System.err.println("IOException: " +
io.getMessage());
}
finally
{
try
{
ostrm.flush();
fstrm.close();
ostrm.close();
}
catch(IOException ioe)
{
System.err.println("IOException: " +
ioe.getMessage());
}
}
}
}
}
else
{
return;
}
}
}
//页面设置
class pageSetupL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
prtMe.printDialog();
}
}
//打印
class printL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try
{
prtMe.print();
}
catch(Exception ew)
{
}
}
}
//退出
class exitL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
//复制
class copyL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String selection = jta.getSelectedText();
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
}
}
//剪切
class cutL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String selection = jta.getSelectedText();
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
jta.replaceRange("", jta.getSelectionStart(),
jta.getSelectionEnd());
}
}
//粘贴
class pasteL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Transferable clipData = clipbd.getContents(JNotepadTest.this);
try
{
String clipString =
(String)clipData.getTransferData(
DataFlavor.stringFlavor);
jta.replaceRange(clipString,
jta.getSelectionStart(), jta.getSelectionEnd());
}
catch(Exception ex)
{
}
}
}
//删除
class deleteL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String selection = jta.getSelectedText();
jta.replaceRange("", jta.getSelectionStart(),
jta.getSelectionEnd());
}
}
//全部选择
class selectAllL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jta.selectAll();
}
}
//查找
class findL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String find = "";
find = JOptionPane.showInputDialog(
"查找的内容:");
}
}
//查找下一个
class findNextL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
//事件监听
class jtaL implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
//快捷键设置
file.add(jmi = new JMenuItem("新建", KeyEvent.VK_N));
jmi.addActionListener(new newL());
file.add(jmi = new JMenuItem("打开", KeyEvent.VK_O));
jmi.addActionListener(new openL());
file.add(jmi = new JMenuItem("保存", KeyEvent.VK_S));
jmi.addActionListener(new saveL());
file.addSeparator();
file.add(jmi = new JMenuItem("页面设置", KeyEvent.VK_G));
jmi.addActionListener(new pageSetupL());
file.add(jmi = new JMenuItem("打印", KeyEvent.VK_P));
jmi.addActionListener(new printL());
file.addSeparator();
file.add(jmi = new JMenuItem("退出", KeyEvent.VK_X));
jmi.addActionListener(new exitL());

edit.add(jmi = new JMenuItem("复制", KeyEvent.VK_C));
jmi.addActionListener(new copyL());
edit.add(jmi = new JMenuItem("剪切", KeyEvent.VK_T));
jmi.addActionListener(new cutL());
edit.add(jmi = new JMenuItem("粘帖", KeyEvent.VK_P));
jmi.addActionListener(new pasteL());
edit.add(jmi = new JMenuItem("删除", KeyEvent.VK_D));
jmi.addActionListener(new deleteL());
edit.addSeparator();
edit.add(jmi = new JMenuItem("全选", KeyEvent.VK_A));
jmi.addActionListener(new selectAllL());

search.add(jmi = new JMenuItem("查找", KeyEvent.VK_F));
jmi.addActionListener(new findL());
search.add(jmi = new JMenuItem("查找下一个", KeyEvent.VK_N));
jmi.addActionListener(new findNextL());
//设置页面布局风格
setLayout(new BorderLayout());
file.setMnemonic(KeyEvent.VK_F);
jmb.add(file);
edit.setMnemonic(KeyEvent.VK_E);
jmb.add(edit);
search.setMnemonic(KeyEvent.VK_S);
jmb.add(search);
jmb.add(Box.createHorizontalGlue());

toolBar.setFloatable(true);
addButtons(toolBar);

add(jmb, BorderLayout.NORTH);
add(toolBar, BorderLayout.CENTER);
add(jsp, BorderLayout.SOUTH);

jta.getCaret().setVisible(true);
jta.setCaretPosition(0);
}

//添加按钮
protected void addButtons(JToolBar toolBar)
{
JButton button = new JButton(new ImageIcon("images/new.gif"));
button.setToolTipText("新建一个文档");
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jta.setDocument(new PlainDocument());
}
});
toolBar.add(button);
//打开按钮
JButton button1 = new JButton(new ImageIcon("images/open.gif"));
button1.setToolTipText("打开一个文档");
//添加按钮的事件监听
button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFileChooser fc = new JFileChooser();
int returnVal = fc.showDialog(JNotepadTest.this, "打开文件");
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String file = fc.getSelectedFile().getPath();
if(file == null)
{
return;
}
try
{
Reader in = new FileReader(file);
char[] buff = new char[4096];
int nch;
while((nch = in.read(buff, 0, buff.length)) != -1)
{
jta.setDocument(new PlainDocument());
jta.append(new String(buff, 0, nch));
}
}
catch (IOException io)
{
System.err.println("IOException: " + io.getMessage());
}
}
else
{
return;
}
}
});
toolBar.add(button1);
//保存按钮
JButton button2 = new JButton(new ImageIcon("images/save.gif"));
button2.setToolTipText("保存文档");
button2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
JFileChooser fc = new JFileChooser();
int returnVal = fc.showSaveDialog(JNotepadTest.this);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
String savefile = fc.getSelectedFile().getPath();
if(savefile == null)
{
return;
}
else
{
String docToSave = jta.getText();
if(docToSave != null)
{
FileOutputStream fstrm = null;
BufferedOutputStream ostrm = null;
try
{
fstrm = new FileOutputStream(savefile);
ostrm = new BufferedOutputStream(fstrm);
byte[] bytes = null;
try
{
bytes = docToSave.getBytes();
}
catch(Exception e1)
{
e1.printStackTrace();
}
ostrm.write(bytes);
}
catch(IOException io)
{
System.err.println("IOException: " +
io.getMessage());
}
finally
{
try
{
ostrm.flush();
fstrm.close();
ostrm.close();
}
catch(IOException ioe)
{
System.err.println("IOException: " +
ioe.getMessage());
}
}
}
}
}
else
{
return;
}
}
});
toolBar.add(button2);
//复制按钮
JButton button3 = new JButton(new ImageIcon("images/copy.gif"));
button3.setToolTipText("复制选择的内容");
button3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String selection = jta.getSelectedText();
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
}
});
toolBar.add(button3);
//剪切按钮
JButton button4 = new JButton(new ImageIcon("images/cut.gif"));
button4.setToolTipText("剪切选择的内容");
button4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String selection = jta.getSelectedText();
StringSelection clipString = new StringSelection(selection);
clipbd.setContents(clipString, clipString);
jta.replaceRange("", jta.getSelectionStart(),
jta.getSelectionEnd());
}
});
toolBar.add(button4);
//粘贴按钮
JButton button5 = new JButton(new ImageIcon("images/paste.gif"));
button5.setToolTipText("粘贴剪切板的内容");
button5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Transferable clipData = clipbd.getContents(JNotepadTest.this);
try
{
String clipString =
(String)clipData.getTransferData(
DataFlavor.stringFlavor);
jta.replaceRange(clipString,
jta.getSelectionStart(), jta.getSelectionEnd());
}
catch(Exception ex)
{
}
}
});
toolBar.add(button5);

}


//关闭窗口
protected static final class appCloseL extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
//主函数,程序入口
public static void main(String args[])
{
JFrame f = new JFrame();
JNotepadTest applet = new JNotepadTest();
f.setTitle("写字板");
f.setBackground(Color.lightGray);
f.getContentPane().add(applet, BorderLayout.CENTER);
f.addWindowListener(new appCloseL());
f.setSize(800, 500);
f.setVisible(true);
f.pack();
}
}

ActionListener

1.按钮的事件通过监听按钮接口,是不是,监听就是解释你的动作呢?按下,释放,按下不放代表什么“意义”。 2.事件来源:用Java语言来解释,就是可以把用户操作(鼠标,键盘,关闭窗口)变成事件的对象。...
  • qq_15766257
  • qq_15766257
  • 2017年03月30日 16:42
  • 1270

public class findmin extends Applet implements ActionListener

  • 2013年10月16日 19:31
  • 772B
  • 下载

关于记事本的“查找下一个”以及“向上向下”,C#.net的一个简单实现

然后纠缠了一个晚上,终于把高手们不怎么感兴趣的记事本“查找下一个”给实现了。本人对是c++转过来学.net 的,理解方式可能还保留了C++的习惯,各位将就啦。 private void button1...
  • tt33415366
  • tt33415366
  • 2011年04月20日 22:40
  • 1505

简单的记事本(不含有查找和替换功能)

一、新建项目:NotePad二、窗体设计1、2、3、4、 5、6、代码  //退出  private void Mexit_Click(object sender, System.EventArgs ...
  • zhengye6910
  • zhengye6910
  • 2006年07月24日 15:06
  • 993

用java模拟写字板程序

源程序代码:import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.Gra...
  • cf527085608
  • cf527085608
  • 2009年11月25日 09:37
  • 2148

简单问题:VIM中 查找 “上一个” 的快捷键是什么?

输入: /abc     查询 abc 开头的单词 之后,所以以abc开头的单词都会标记高亮 输入 n  会查找下一个结果...
  • A11085013
  • A11085013
  • 2014年08月31日 08:28
  • 29435

Java语言设计文本查找器和文本编辑器

Tips:本程序使用java语言设计文本查找器和文本编辑器,使用的是java中的监听机制和GUI图形式界面。 注:底层调用了Windows方法 以下为程序源码: import java.awt.*; ...
  • qq_34122768
  • qq_34122768
  • 2016年06月12日 17:04
  • 955

linux vi 查找

使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容。这时,使用查找功能尤为重要。方法如下:1、命令模式下输入“/字符串”,例如“/Section 3”。2、如果查找下一个,按“n”即可...
  • shine0181
  • shine0181
  • 2011年07月25日 17:16
  • 54981

delphi 查找下一个控件并设置焦点

with Self dobegin for i := 0 to ControlCount - 1 do begin if TWinControl(Controls[i]).TabOrder...
  • kobaer
  • kobaer
  • 2009年11月11日 09:07
  • 882

C#RichTextBox 文本查找与替换

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  • ou832339
  • ou832339
  • 2014年04月15日 20:01
  • 3525
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:这是一个用JAVA编辑的写字板程序,但不知道为什么不能实现"查找"和"查找下一个功能",麻烦各位大虾看一下.
举报原因:
原因补充:

(最多只允许输入30个字)