//นำเข้าแพ็คเกจคลาส JAVA
นำเข้า java.awt.*;
นำเข้า java.awt.event.*;
นำเข้า javax.swing.*;
นำเข้า java.io.*;
คลาส EditFile
-
//คอนสตรัคเตอร์เริ่มต้น
แก้ไขไฟล์(){}
//ฟังก์ชั่นบันทึกไฟล์
เป็นโมฆะ SaveFile (ชื่อสตริง, สตริง str)
-
พยายาม
-
//ประกาศวัตถุเอาท์พุตไฟล์
FileOutputStream fos = FileOutputStream ใหม่ (ชื่อ);
//ส่งออกไฟล์บันทึก
fos.write(str.getBytes());
-
จับ (IOException จ)
-
//เกิดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดในการพิมพ์
System.out.println(e.toString());
-
-
//ฟังก์ชั่นเปิดไฟล์
สตริง OpenFile (ชื่อสตริง)
-
//กำหนดสตริง str เพื่อบันทึกเนื้อหาไฟล์
สตริง str=null;
//กำหนดตัวนับ
intch=0;
พยายาม
-
//ประกาศวัตถุอินพุตไฟล์
FileInputStream fis = FileInputStream ใหม่ (ชื่อ);
//สำรวจวัตถุอินพุตและจัดเก็บหน่วยความจำใน str
ในขณะที่ ((ch=fis.read())!=-1)
-
str=str+(ถ่าน)ch;
-
//ปิดวัตถุไฟล์
fis.ปิด();
-
จับ (IOException จ)
-
//เกิดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดในการพิมพ์
System.out.println(e.toString());
-
//กลับstr
กลับ STR;
-
}
คลาส MyMainFrame ขยาย JFrame ใช้งาน ActionListener
-
//ชื่อไฟล์
ชื่อไฟล์สตริง=null;
//ค้นหาสตริง
สตริง findtxt=null;
//แทนที่สตริง
สตริงreplacetxt=null;
//ค้นหาตำแหน่งเริ่มต้น
int findtxton=-1;
//หาจุดสิ้นสุด
int findtxtoff=-1;
//แผงกลาง
คอนเทนเนอร์ c=getContentPane();
//เมนู
JMenuBar mainMb=ใหม่ JMenuBar();
//ปุ่มเมนู
JMenu fileMenu=ใหม่ JMenu("ไฟล์");
JMenu editMenu=ใหม่ JMenu("แก้ไข");
JMenu typeMenu=ใหม่ JMenu("รูปแบบ");
JMenuItem newItem=ใหม่ JMenuItem("ใหม่");
JMenuItem openItem=ใหม่ JMenuItem("open");
JMenuItem saveItem=ใหม่ JMenuItem("บันทึก");
JMenuItem saveasItem=new JMenuItem("บันทึกเป็น");
JMenuItem exitItem=ใหม่ JMenuItem("ออก");
JMenuItem findItem=ใหม่ JMenuItem("ค้นหา");
JMenuItem findnextItem=ใหม่ JMenuItem("ค้นหาถัดไป");
JMenuItem changeItem=ใหม่ JMenuItem("แทนที่");
JCheckBoxMenuItem changelineItem=new JCheckBoxMenuItem("ตัดบรรทัดอัตโนมัติ",false);
//ช่องข้อความ
JTextArea txt=ใหม่ JTextArea();
JTextArea txt2=JTextArea ใหม่();
//แถบเลื่อน
JScrollPane jsp;
//วัตถุการดำเนินการไฟล์
EditFile ef=new แก้ไขไฟล์();
//คอนสตรัคเตอร์
MyMainFrame()
-
//วาดอินเทอร์เฟซ
c.setLayout(BorderLayout ใหม่());
jsp= JScrollPane ใหม่(txt);
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
c.เพิ่ม(jsp,BorderLayout.CENTER);
mainMb.add(เมนูไฟล์);
fileMenu.add(รายการใหม่);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveasItem);
fileMenu.addSeparator();
fileMenu.add(รายการออก);
mainMb.add(แก้ไขเมนู);
editMenu.add(findItem);
editMenu.add(findnextItem);
editMenu.add(รายการเปลี่ยนแปลง);
mainMb.add(typeMenu);
typeMenu.add(changelineItem);
setJMenuBar(mainMb);
//เพิ่มการฟังเหตุการณ์สำหรับเมนู
newItem.addActionListener (สิ่งนี้);
openItem.addActionListener (สิ่งนี้);
saveItem.addActionListener (สิ่งนี้);
saveasItem.addActionListener (สิ่งนี้);
exitItem.addActionListener (สิ่งนี้);
findItem.addActionListener (สิ่งนี้);
findnextItem.addActionListener (สิ่งนี้);
changeItem.addActionListener (สิ่งนี้);
changelineItem.addActionListener (สิ่งนี้);
-
//ฟังก์ชันตัวจัดการเหตุการณ์
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e)
-
//สร้างวัตถุการดำเนินการไฟล์
EditFile ef=new แก้ไขไฟล์();
//หากคลิกปุ่มแสดงว่าเป็นปุ่มใหม่
ถ้า(e.getActionCommand()=="ใหม่")
-
//ตั้งค่าช่องข้อความให้ว่างเปล่า
txt.setText(null);
//ชื่อไฟล์ว่างเปล่า
ชื่อไฟล์=null;
-
//หากคลิกปุ่มเพื่อเปิด
ถ้า(e.getActionCommand()=="เปิด")
-
//กำหนดรูปแบบไฟล์
FileDialog openDialog=ใหม่ FileDialog(นี่,"เปิดไฟล์...",FileDialog.LOAD);
//แสดงแบบฟอร์ม
openDialog.show();
//หากไฟล์ที่ส่งคืนไม่ว่างเปล่า
ถ้า(openDialog.getFile()!=null)
-
//รับชื่อไฟล์
ชื่อไฟล์=openDialog.getFile();
//รับเนื้อหาไฟล์
txt.setText(ef.OpenFile(openDialog.getFile()));
-
-
//หากคลิกปุ่มเพื่อบันทึก
ถ้า(e.getActionCommand()=="บันทึก")
-
//หากไม่มีชื่อไฟล์
ถ้า (ชื่อไฟล์==null)
-
//กำหนดรูปแบบไฟล์
FileDialog saveDialog=ใหม่ FileDialog(นี่,"บันทึกเป็น...",FileDialog.SAVE);
//แสดงแบบฟอร์ม
saveDialog.show();
//หากไฟล์ที่ส่งคืนไม่ว่างเปล่า
ถ้า(saveDialog.getFile()!=null)
-
//รับชื่อไฟล์
ชื่อไฟล์=saveDialog.getFile();
//บันทึกไฟล์
ef.SaveFile(ชื่อไฟล์,txt.getText());
-
-
อื่น
-
//บันทึกไฟล์โดยตรง
ef.SaveFile(ชื่อไฟล์,txt.getText());
-
-
//หากคลิกปุ่มเพื่อบันทึกเป็น
if(e.getActionCommand()=="บันทึกเป็น")
-
//กำหนดรูปแบบไฟล์
FileDialog saveDialog=ใหม่ FileDialog(นี่,"บันทึกเป็น...",FileDialog.SAVE);
//แสดงแบบฟอร์ม
saveDialog.show();
//หากไฟล์ที่ส่งคืนไม่ว่างเปล่า
ถ้า(saveDialog.getFile()!=null)
-
//รับชื่อไฟล์
ชื่อไฟล์=saveDialog.getFile();
//บันทึกไฟล์
ef.SaveFile(ชื่อไฟล์,txt.getText());
-
-
//หากคลิกปุ่มเพื่อออก
ถ้า(e.getActionCommand()=="ออก")
-
//ล้มเลิก
System.ออก(0);
-
//หากคลิกปุ่ม จะเป็นการค้นหา
ถ้า(e.getActionCommand()=="ค้นหา")
-
//กำหนดกล่องโต้ตอบ
JOptionPane inputdia=ใหม่ JOptionPane();
//กำหนดกล่องโต้ตอบเพื่อรับข้อความค้นหา
findtxt=inputdia.showInputDialog("กรุณากรอกข้อความที่คุณต้องการค้นหา",null);
//กำหนดพิกัดจริง
findtxton=-1;
findtxtoff=-1;
//เรียกใช้ฟังก์ชันการค้นหา
หา();
-
//หากคลิกปุ่มเพื่อค้นหาอันถัดไป
if(e.getActionCommand()=="ค้นหาถัดไป")
-
//เรียกใช้ฟังก์ชันการค้นหา
หา();
-
//หากคลิกปุ่มแล้ว ให้แทนที่
ถ้า(e.getActionCommand()=="แทนที่")
-
//กำหนดกล่องโต้ตอบ
JOptionPane inputdia=ใหม่ JOptionPane();
//รับการค้นหาและแทนที่ข้อความ
findtxt=inputdia.showInputDialog("กรุณากรอกข้อความที่ต้องการแทนที่",null);
replacementtxt=inputdia.showInputDialog("กรุณากรอกข้อความที่ถูกแทนที่",null);
// เนื้อหาสำรอง
txt2.setText(แทนที่xt);
txt2.selectAll();
txt2.copy();
//เรียกใช้ฟังก์ชันการค้นหา
หา();
//ถ้าหาไม่เจอ
ถ้า(findtxton==-1&&findtxtoff==-1)
-
-
//ถ้าเจอ.
อื่น
-
//แทนที่
txt.วาง();
-
findtxton=-1;
findtxtoff=-1;
-
//หากคลิกปุ่ม มันจะตัดคำโดยอัตโนมัติ
if(e.getActionCommand()=="ตัดบรรทัดอัตโนมัติ")
-
//ตัดสินสถานะปัจจุบัน
ถ้า (changelineItem.isSelected()==true)
-
//ตั้งค่าสถานะของแถบเลื่อน
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_NEVER);
//ตั้งค่าว่าจะห่อหรือไม่
txt.setLineWrap(จริง);
-
อื่น
-
jsp.setHorizontalScrollBarPolicy(jsp.HORIZONTAL_SCROLLBAR_AS_NEEDED);
txt.setLineWrap(เท็จ);
-
-
-
// ค้นหาฟังก์ชั่น
โมฆะสาธารณะค้นหา ()
-
//กำหนดสตริงชั่วคราว
สตริง tempstr;
//ค้นหาข้อความหากไม่ว่างเปล่า
ถ้า(findtxt!=null)
-
พยายาม
-
//ค้นหา
tempstr=txt.getText(findtxton+1,(txt.getText().length()-findtxton-1));
findtxton=findtxton+1+tempstr.indexOf(findtxt);
-
จับ (ยกเว้น e)
{
}
//หากบิตเริ่มต้นเปลี่ยนแปลง ก็จะพบ
ถ้า(findtxton!=-1)
-
//ตั้งค่าบิตท้าย
findtxtoff=findtxton+findtxt.length();
-
อื่น
-
//มิฉะนั้นจะแสดงผลว่าไม่พบ
findtxtoff=-1;
JOptionPane.showMessageDialog(null,"ไม่พบ");
-
//เลือกส่วนที่พบ
txt.select(findtxton,findtxtoff);
-
-
}
TextEdit คลาสสาธารณะ
-
//ฟังก์ชั่นหลัก
โมฆะคงสาธารณะหลัก (String args [])
-
//ประกาศกำหนดรูปแบบหลัก
MyMainFrame f=ใหม่ MyMainFrame();
f.setSize(640,480);
f.setTitle("แก้ไขข้อความ");
//แสดงแบบฟอร์มหลัก
f.setVisible(จริง);
}
}
/*
ปัญหาเกี่ยวกับการตัดบรรทัดอัตโนมัติของ JTextArea
-------------------------------------------------- -------------------------------------------------- ----------------------------------
หากตั้งค่าแถบเลื่อนแนวนอนเป็น JSctollpane
จากนั้น JTextArea ที่เพิ่มวัตถุ JSctollpane นี้จะมีฟังก์ชันการตัดบรรทัดใช่ไหม
-------------------------------------------------- -------------------------------------------------- --------------------------
JTextArea.setLineWrap(ห่อบูลีน)
------------- ---- --------------------------------------------------- ---- --------------
JTextArea.setLineWrap(ตัดบูลีน)//ตัดบรรทัดทั่วไป
JTextArea.setWrapStyleWorld(โลกบูลีน)//แบ่งบรรทัดโดยใช้ขอบคำเป็นขอบเขต
-