我仿照windows 下的记事本,用java编写了一个,可是到具体的查找功能实现的时候,就不知道如何实现了,哪位高手愿意点拨一下,感激不尽,我要求查找的实现和windows下记事本查找的功能一样,我自己写了一个框架,到事件的响应就不太会了,谢谢大家帮我完善一下
class Serach extends Frame implements ActionListener,ItemListener{
Label label;
TextField textfield;
Button button1,button2;
Checkbox box1,box2,box3;
CheckboxGroup towards;
Serach(String s){
super(s);
setSize(400,150);
setLayout(new FlowLayout());
label=new Label("查找内容(N)");
textfield=new TextField(15);
button1=new Button("查找下一个");
button2=new Button("取消");
box1=new Checkbox("区分大小写(C)");
box2=new Checkbox("向上(U)",false,towards);
box3=new Checkbox("向下(D)",true,towards);
textfield.addActionListener(this);
button1.addActionListener(this);
button2.addActionListener(this);
box1.addItemListener(this);
box2.addItemListener(this);
box3.addItemListener(this);
add(label); add(textfield);
add(button1); add(box1);
add(box2); add(box3);
add(button2);
setVisible(true);
validate();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
setVisible(false);
}
});
} public void actionPerformed(ActionEvent e) {
if(e.getSource()==button2){
System.exit(0);
}
else if(e.getSource()==button1||e.getSource()==textfield){
try{
String s,t;
t=textfield.getText();
DMenu d = null;
s=d.text.getText();
StringTokenizer fenxi=new StringTokenizer(s," ,,");
int n=fenxi.countTokens();
String a[]=new String [n];
for(int i=0;i<fenxi.countTokens();i++){
if(a[i].equals(t)){
}
}
}
catch(Exception ee){
textfield.setText("无匹配内容");
}
}
// TODO Auto-generated method stub
} public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
}
}
在for里面如何实现查找,我就不太会了,答对50分双手奉上
再次感谢您的关注
class Serach extends Frame implements ActionListener,ItemListener{
Label label;
TextField textfield;
Button button1,button2;
Checkbox box1,box2,box3;
CheckboxGroup towards;
Serach(String s){
super(s);
setSize(400,150);
setLayout(new FlowLayout());
label=new Label("查找内容(N)");
textfield=new TextField(15);
button1=new Button("查找下一个");
button2=new Button("取消");
box1=new Checkbox("区分大小写(C)");
box2=new Checkbox("向上(U)",false,towards);
box3=new Checkbox("向下(D)",true,towards);
textfield.addActionListener(this);
button1.addActionListener(this);
button2.addActionListener(this);
box1.addItemListener(this);
box2.addItemListener(this);
box3.addItemListener(this);
add(label); add(textfield);
add(button1); add(box1);
add(box2); add(box3);
add(button2);
setVisible(true);
validate();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
setVisible(false);
}
});
} public void actionPerformed(ActionEvent e) {
if(e.getSource()==button2){
System.exit(0);
}
else if(e.getSource()==button1||e.getSource()==textfield){
try{
String s,t;
t=textfield.getText();
DMenu d = null;
s=d.text.getText();
StringTokenizer fenxi=new StringTokenizer(s," ,,");
int n=fenxi.countTokens();
String a[]=new String [n];
for(int i=0;i<fenxi.countTokens();i++){
if(a[i].equals(t)){
}
}
}
catch(Exception ee){
textfield.setText("无匹配内容");
}
}
// TODO Auto-generated method stub
} public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
}
}
在for里面如何实现查找,我就不太会了,答对50分双手奉上
再次感谢您的关注
var
NotepadForm: TNotepadForm;const
defaultfilename = 'noname';implementationuses
SysUtils, Mapi, about, SHFolder;{$R *.dfm}resourcestring
SUntitled = 'Untitled';
SOverwrite = 'OK to overwrite %s';
SSendError = 'Error sending mail';function DefaultSaveLocation: string;
var
P: PChar;
begin
P := nil;
try
P := AllocMem(MAX_PATH);
if SHGetFolderPath(0, CSIDL_PERSONAL, 0, 0, P) = S_OK then
Result := P
else
Result := GetCurrentDir;
finally
FreeMem(P);
end;
end;procedure TNotepadForm.FileNew1Execute(Sender: TObject);
var
mr : word;begin
if RichEdit1.Modified then
begin
mr := MessageDlg('Text is modified, save or not?',mtConfirmation, mbYesNoCancel, 0);
if mr = mryes then
begin
ToolButton3.Click;
end
else if mr = mrCancel then
abort;
end;
NotepadForm.Caption :='noname';
SaveDialog.InitialDir := DefaultSaveLocation;
FFileName := SUntitled;
RichEdit1.Lines.Clear;
RichEdit1.Modified := False;
end;procedure TNotepadForm.FileOpen1Execute(Sender: TObject);
begin
if OpenDialog.Execute then
begin
RichEdit1.Lines.LoadFromFile(OpenDialog.FileName);
FFileName := OpenDialog.FileName;
NotepadForm.Caption := FFileName;
RichEdit1.SetFocus;
RichEdit1.Modified := False;
RichEdit1.ReadOnly := ofReadOnly in OpenDialog.Options;
end;
end;procedure TNotepadForm.FileSave1Execute(Sender: TObject);
begin
if (FFileName = SUntitled) or (FFileName = '') then
FileSaveAs1Execute(Sender)
else
begin
RichEdit1.Lines.SaveToFile(FFileName);
RichEdit1.Modified := False;
end;
end;procedure TNotepadForm.FileSaveAs1Execute(Sender: TObject);
begin
with SaveDialog do
begin
FileName := FFileName;
if Execute then
begin
if FileExists(FileName) then
if MessageDlg(Format(SOverwrite, [FileName]),
mtConfirmation, mbYesNoCancel, 0) <> idYes then Exit;
RichEdit1.Lines.SaveToFile(FileName);
FFileName := FileName;
RichEdit1.Modified := False;
end;
end;
end;procedure TNotepadForm.FileSend1Execute(Sender: TObject);
var
MapiMessage: TMapiMessage;
MError: Cardinal;
begin
with MapiMessage do
begin
ulReserved := 0;
lpszSubject := nil;
lpszNoteText := PChar(RichEdit1.Lines.Text);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 0;
lpRecips := nil;
nFileCount := 0;
lpFiles := nil;
end; MError := MapiSendMail(0, Application.Handle, MapiMessage,
MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
if MError <> 0 then MessageDlg(SSendError, mtError, [mbOK], 0);
end;procedure TNotepadForm.FileExit1Execute(Sender: TObject);
begin
Close;
end;procedure TNotepadForm.HelpAbout1Execute(Sender: TObject);
begin
AboutBox.ShowModal;
end;procedure TNotepadForm.FormCreate(Sender: TObject);
begin
FileNew1.Execute; { sets the default file name and clears the RichEdit Control }
FontCombo.Items := Screen.Fonts;
FontCombo.ItemIndex := FontCombo.Items.IndexOf (
RichEdit1.Font.Name);
end;procedure TNotepadForm.AutoNextline1Click(Sender: TObject);
begin
AutoNextline1.Checked := not AutoNextline1.Checked;
RichEdit1.WordWrap := not RichEdit1.WordWrap;
end;procedure TNotepadForm.N3Click(Sender: TObject);
begin
if RichEdit1.SelLength = 0 then
begin //没有选择文本
fontdialog1.Font := RichEdit1.Font;
if fontdialog1.Execute then
RichEdit1.defAttributes.Assign(fontdialog1.Font);
end
else
begin //对有选择文本
fontdialog1.Font := RichEdit1.Font;
if fontdialog1.Execute then
RichEdit1.selAttributes.Assign(fontdialog1.Font);
end;
end;
begin
colordialog1.Color := RichEdit1.SelAttributes.Color;
if colordialog1.Execute then
RichEdit1.SelAttributes.Color := colordialog1.Color;
end;procedure TNotepadForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
var
mr : word;begin
if RichEdit1.Modified then
begin
mr := MessageDlg('Text is modified, save or not?',mtConfirmation, mbYesNoCancel, 0);
if mr = mryes then
begin
ToolButton3.Click;
end
else if mr = mrCancel then
abort;
end;
end;procedure TNotepadForm.BoldButtonClick(Sender: TObject);
begin
if BoldButton.Down then
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsBold]
else
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.style - [fsBold];
end;procedure TNotepadForm.ItalicButtonClick(Sender: TObject);
begin
if ItalicButton.Down then
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsItalic]
else
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.style - [fsItalic];
end;procedure TNotepadForm.UnderlineButtonClick(Sender: TObject);
begin
if UnderlineButton.Down then
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsunderline]
else
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.style - [fsunderline];
end;procedure TNotepadForm.leftalignButtonClick(Sender: TObject);
begin
RichEdit1.Paragraph.Alignment:=taleftjustify;
end;procedure TNotepadForm.CenterAlignbuttonClick(Sender: TObject);
begin
RichEdit1.Paragraph.Alignment:=tacenter;
end;procedure TNotepadForm.RightAlignbuttonClick(Sender: TObject);
begin
RichEdit1.Paragraph.Alignment:=tarightjustify;
end;procedure TNotepadForm.RichEdit1SelectionChange(Sender: TObject);
begin
StatusBar.Panels[0].Text := Format ('Position: ' + '%d/%d',
[RichEdit1.CaretPos.Y + 1, RichEdit1.CaretPos.X + 1]); with RichEdit1.Paragraph do
begin
BoldButton.Down := fsBold in RichEdit1.SelAttributes.Style;
ItalicButton.Down := fsItalic in RichEdit1.SelAttributes.Style;
UnderlineButton.Down := fsUnderline in RichEdit1.SelAttributes.Style;
n1.Checked:=fsBold in RichEdit1.SelAttributes.Style;
n2.Checked:=fsItalic in RichEdit1.SelAttributes.Style;
n3.Checked:=fsUnderline in RichEdit1.SelAttributes.Style;
case Ord(Alignment) of
0: LeftalignButton.Down := True;
2: CenterAlignbutton.Down := True;
1: RightAlignbutton.Down := True;
end;
end;
end;procedure TNotepadForm.FontComboClick(Sender: TObject);
begin
RichEdit1.SelAttributes.Name := FontCombo.Text;
RichEdit1.SetFocus;
end;procedure TNotepadForm.SizeComboKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
RichEdit1.SelAttributes.Size := StrtoInt(SizeCombo.Text);
RichEdit1.SetFocus;
end;
end;procedure TNotepadForm.ColorBox1Change(Sender: TObject);
begin
RichEdit1.SelAttributes.Color := ColorBox1.Selected;
RichEdit1.SetFocus;
end;procedure TNotepadForm.SizeComboClick(Sender: TObject);
begin
RichEdit1.SelAttributes.Size := StrtoInt(SizeCombo.Text);
RichEdit1.SetFocus;
end;procedure TNotepadForm.ApplicationEvents1Hint(Sender: TObject);
begin
// show hint in the status bar message panel
StatusBar.Panels[1].Text := Application.Hint;
end;end.
不难,自己研究一下就会了
我博客有篇文章可能有些帮助----《在java中使用正则表达是》
http://blog.sina.com.cn/u/413f5055010005of