// استيراد حزمة فئة جافا
import java.awt.*;
import java.awt.event.*;
استيراد javax.swing.*;
import java.io.*;
class EditFile
{
// المنشئ الافتراضي
تحرير الملف (){}
// حفظ وظيفة الملف
SaveFile باطلة (اسم السلسلة، سلسلة السلسلة)
{
يحاول
{
// قم بتعريف كائن إخراج الملف
FileOutputStream fos = new FileOutputStream(name);
// ملف حفظ الإخراج
fos.write(str.getBytes());
}
قبض (IOException ه)
{
// حدث خطأ وطباعة رسالة خطأ
System.out.println(e.toString());
}
}
// وظيفة الملف المفتوح
سلسلة OpenFile (اسم السلسلة)
{
// حدد السلسلة str لحفظ محتوى الملف
سلسلة str=null;
// تعريف العداد
كثافة العمليات الفصل = 0;
يحاول
{
// قم بتعريف كائن إدخال الملف
FileInputStream fis = new FileInputStream(name);
// اجتياز كائن الإدخال وتخزين الذاكرة في str
بينما ((ch=fis.read())!=-1)
{
str=str+(char)ch;
}
// أغلق كائن الملف
fis. Close();
}
قبض (IOException ه)
{
// حدث خطأ وطباعة رسالة خطأ
System.out.println(e.toString());
}
// عودة شارع
شارع العودة؛
}
}
يمتد فئة MyMainFrame ويقوم JFrame بتنفيذ ActionListener
{
// اسم الملف
اسم ملف السلسلة = فارغ؛
// ابحث عن السلسلة
سلسلة findtxt=null;
// استبدال السلسلة
سلسلة استبدالtxt=null;
// ابحث عن موضع البداية
int findtxton=-1;
// ابحث عن بت النهاية
int findtxtoff=-1;
// اللوحة الوسطى
الحاوية c=getContentPane();
//قائمة طعام
JMenuBar mainMb=new JMenuBar();
// زر القائمة
JMenu fileMenu=new JMenu("File");
JMenueditMenu=new JMenu("تحرير");
JMenu typeMenu=new JMenu("format");
JMenuItem newItem=new JMenuItem("New");
JMenuItem openItem=new JMenuItem("open");
JMenuItem saveItem=new JMenuItem("Save");
JMenuItem saveasItem=new JMenuItem("حفظ باسم");
JMenuItem ExitItem=new JMenuItem("Exit");
JMenuItem findItem=new JMenuItem("Find");
JMenuItem findnextItem=new JMenuItem("البحث عن التالي");
JMenuItem ChangeItem=new JMenuItem("replace");
JCheckBoxMenuItem ChangelineItem=new JCheckBoxMenuItem("التفاف السطر التلقائي",false);
// حقل النص
JTextArea txt=new JTextArea();
JTextArea txt2=new JTextArea();
// شريط التمرير
JScrollPane jsp;
// كائن تشغيل الملف
EditFile ef=new EditFile();
//المنشئ
مايمين فريم ()
{
// ارسم الواجهة
c.setLayout(new BorderLayout());
jsp= new JScrollPane(txt);
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
c.add(jsp,BorderLayout.CENTER);
mainMb.add(fileMenu);
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveasItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
mainMb.add(editMenu);
EditMenu.add(findItem);
EditMenu.add(findnextItem);
EditMenu.add(changeItem);
mainMb.add(typeMenu);
typeMenu.add(changelineItem);
setJMenuBar(mainMb);
// أضف الاستماع إلى الحدث في القائمة
newItem.addActionListener(this);
openItem.addActionListener(this);
saveItem.addActionListener(this);
saveasItem.addActionListener(this);
exitItem.addActionListener(this);
findItem.addActionListener(this);
findnextItem.addActionListener(this);
ChangeItem.addActionListener(this);
ChangelineItem.addActionListener(this);
}
// وظيفة معالج الأحداث
إجراء باطل عام تم تنفيذه (ActionEvent e)
{
// أنشئ كائن تشغيل ملف
EditFile ef=new EditFile();
// إذا تم النقر على الزر، فهو جديد
إذا (e.getActionCommand () = = "جديد")
{
// اضبط حقل النص على فارغ
txt.setText(null);
// اسم الملف فارغ
اسم الملف=فارغ;
}
// إذا تم النقر على الزر لفتحه
إذا (e.getActionCommand () = = "فتح")
{
// تحديد نموذج الملف
FileDialog openDialog=new FileDialog(this,"Open file...",FileDialog.LOAD);
// عرض النموذج
openDialog.show();
// إذا لم يكن الملف الذي تم إرجاعه فارغًا
إذا (openDialog.getFile()!=null)
{
// احصل على اسم الملف
filename=openDialog.getFile();
// احصل على محتوى الملف
txt.setText(ef.OpenFile(openDialog.getFile()));
}
}
// إذا تم النقر على الزر للحفظ
إذا (e.getActionCommand () = = "حفظ")
{
// إذا لم يكن هناك اسم الملف
إذا (اسم الملف==فارغ)
{
// تحديد نموذج الملف
FileDialog saveDialog=new FileDialog(this,"حفظ باسم...",FileDialog.SAVE);
// عرض النموذج
saveDialog.show();
// إذا لم يكن الملف الذي تم إرجاعه فارغًا
إذا (saveDialog.getFile ()!=null)
{
// احصل على اسم الملف
filename=saveDialog.getFile();
//حفظ الملف
ef.SaveFile(filename,txt.getText());
}
}
آخر
{
// احفظ الملف مباشرة
ef.SaveFile(filename,txt.getText());
}
}
// إذا قمت بالنقر فوق الزر للحفظ باسم
إذا (e.getActionCommand () = = "حفظ باسم")
{
// تحديد نموذج الملف
FileDialog saveDialog=new FileDialog(this,"حفظ باسم...",FileDialog.SAVE);
// عرض النموذج
saveDialog.show();
// إذا لم يكن الملف الذي تم إرجاعه فارغًا
إذا (saveDialog.getFile ()!=null)
{
// احصل على اسم الملف
filename=saveDialog.getFile();
//حفظ الملف
ef.SaveFile(filename,txt.getText());
}
}
// إذا تم النقر على الزر للخروج
إذا (e.getActionCommand () = = "خروج")
{
//يترك
System.exit(0);
}
// إذا تم النقر على الزر، فهو بحث
إذا (e.getActionCommand () = = "بحث")
{
// تحديد مربع حوار
JOptionPane inputdia=new JOptionPane();
// تحديد مربع الحوار للحصول على نص البحث
findtxt=inputdia.showInputDialog("الرجاء إدخال النص الذي تريد البحث عنه"،null);
// تحديد الإحداثيات الفعلية
findtxton=-1;
findtxtoff=-1;
// اتصل بوظيفة البحث
يجد()؛
}
// إذا قمت بالنقر فوق الزر للعثور على الزر التالي
إذا (e.getActionCommand () = = "البحث عن التالي")
{
// اتصل بوظيفة البحث
يجد()؛
}
// إذا تم النقر فوق الزر، استبدل
إذا (e.getActionCommand () = = "استبدال")
{
// تحديد مربع حوار
JOptionPane inputdia=new JOptionPane();
// احصل على البحث عن النص واستبداله
findtxt=inputdia.showInputDialog("الرجاء إدخال النص المراد استبداله"،null);
استبدالtxt=inputdia.showInputDialog("الرجاء إدخال النص المستبدل",null);
// محتوى النسخ الاحتياطي
txt2.setText(replacetxt);
txt2.selectAll();
txt2.copy();
// اتصل بوظيفة البحث
يجد()؛
//إذا لم يتم العثور عليه
إذا (findtxton==-1&&findtxtoff==-1)
{
}
//إذا وجدت
آخر
{
//يستبدل
txt.paste();
}
findtxton=-1;
findtxtoff=-1;
}
// إذا تم النقر على الزر، فسيتم التفافه تلقائيًا
if(e.getActionCommand()=="التفاف السطر التلقائي")
{
//الحكم على الوضع الحالي
إذا (changelineItem.isSelected ()==صحيح)
{
// قم بتعيين حالة شريط التمرير
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_NEVER);
// اضبط ما إذا كنت تريد الالتفاف أم لا
txt.setLineWrap(true);
}
آخر
{
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txt.setLineWrap(false);
}
}
}
// ابحث عن وظيفة
العثور على الفراغ العام ()
{
// تحديد السلسلة المؤقتة
سلسلة درجة الحرارة؛
// ابحث عن النص إذا لم يكن فارغًا
إذا (findtxt!=null)
{
يحاول
{
//يبحث
tempstr=txt.getText(findtxton+1,(txt.getText().length()-findtxton-1));
findtxton=findtxton+1+tempstr.indexOf(findtxt);
}
قبض (استثناء ه)
{
}
// إذا تغير بت البداية، فسيتم العثور عليه
إذا (findtxton!=-1)
{
// قم بتعيين بت النهاية
findtxtoff=findtxton+findtxt. length();
}
آخر
{
// وإلا فسيتم عرضه غير موجود
findtxtoff=-1;
JOptionPane.showMessageDialog(null,"لم يتم العثور عليه");
}
// حدد الجزء الذي تم العثور عليه
txt.select(findtxton,findtxtoff);
}
}
}
فئة عامة TextEdit
{
// الوظيفة الرئيسية
الفراغ العام الثابت الرئيسي (سلسلة الحجج [])
{
// إعلان لتعيين النموذج الرئيسي
MyMainFrame f=new MyMainFrame();
f.setSize(640,480);
f.setTitle("محرر النصوص");
// عرض النموذج الرئيسي
f.setVisible(true
}
);
}
/*
مشاكل في التفاف السطر التلقائي لـ JTextArea
-------------------------------------------------- ----------------------------------
إذا تم ضبط شريط التمرير الأفقي على JSctollpane.
، فإن JTextArea مع كائن JSctollpane المضاف سيكون له وظيفة التفاف السطر، أليس كذلك؟
-------------------------------------------------- --------------------------
JTextArea.setLineWrap(التفاف منطقي)
------------- ---- ---------------------------------------------- ---- --------------
JTextArea.setLineWrap (التفاف منطقي) // التفاف السطر العام.
JTextArea.setWrapStyleWorld(عالم منطقي)// كسر الخطوط باستخدام حواف الكلمات كحدود
*/