PHÂN CÔNG CÔNG VIỆC Nguyễn Thành An Làm chức năng about Lê Minh Ngọc Làm chức năng ở menu edit Nguyễn Thị Hà Li Làm chức năng ở menu format Lê Đức Trung Làm giao diện chính , làm chức nă
Trang 1VIỆN ĐẠI HỌC MỞ HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
THẢO NOTEPAD
Giảng viên hướng dẫn ` : Trịnh Thị Xuân
Sinh viên thực hiên ` : Nguyễn Thành An - 16A2
Hà Nội – <2018>
Trang 3PHÂN CÔNG CÔNG VIỆC
Nguyễn Thành An Làm chức năng about
Lê Minh Ngọc Làm chức năng ở menu edit
Nguyễn Thị Hà Li Làm chức năng ở menu format
Lê Đức Trung Làm giao diện chính , làm chức
năng ở menu file , viết báo cáo
Trang 51.Phát biểu vấn đề
- Phân tích đề bài : “ Thực hiện phân tích – thiết kế và lập trình hướng đối tượng đểquản lý các đối tượng và các thao tác của “ xây dựng chương trình mô phỏngchương trình soạn thảo Notepad “
- Đây là một chương trình soạn thảo văn bản đơn giản và dễ dùng , nó là một ứngdụng cần thiết trong đời sống của con người dùng để lưu trữ dữ liệu dạng văn bản ,Giao diện thân thiện với người dùng , và có những tính năng như thay đổi kiểu chữ
cỡ chữ và phông chữ , tìm kiếm và thay thế ,
- Hiện thông tin nhóm lập trình
II Xác Định Sơ Đồ Lớp Của Bài Toán
Trang 61 Giao diện phần mền
- Danh sách menu chương trình
Trang 7- Giao diện change font
Trang 8Giao diện tìm kiếm
- Giao diện replace
- Giao diện about ( thông tin nhóm )
Trang 92 Phân tích lớp
Lớp File
- Thuộc tính : Tên file
- Phương thức : Tạo file mới , mở file , lưu file , lưu đè file
Lớp Text
- Thuộc tính : Nôi dung text , phông chữ , kiểu chữ , cỡ chữ
- Phương thức : sao chép nội dung ( copy ) , cắt nội dung ( cut ) , dánnội dung ( paste ) , trở lại ( undo ) , redo , tìm nội dung ( find ) , thay thế nội dung( replace ) , thay đổi phông chữ , kiểu chữ , cỡ chữ
Trang 103 Sơ đồ quan hệ các lớp
FileTên File
File()Newfile()Openfile()SaveFile()Saveasfile()
AboutThông tin nhóm lập trình
TextNội dungPhông chữKiểu chữ
Cỡ chữ
Text()Copy()Cut()Paste()Redo()Undo()Replace()Find()Format()
Trang 11III MÔ TẢ THUẬT TOÁN – THAO TÁC
Trang 12 Format
- Thay đổi phông chữ , cỡ chữ , kiểu chữ
About
- Hiện thông tin nhóm lập trình
2 Mô Tả Chi Tiết Các Thao Tác Thực Hiện Chức Năng
Nhập dữ liệu ( nhập dữ liệu vào , ví dụ như bên dưới )
2.1 File
Tạo mới file : Dùng để tạo một file mới
- cách dùng : vào file rồi chọn new , hoặc nhấn tổ hợp ctrl + N
Trang 13- Nếu có dữ liệu đang soạn thảo thì ứng dụng sẽ thông báo có lưu file hay không( ấn save thì sẽ lưu file đó lại , don’t save thì sẽ tạo mới không lưu file đó lại )
- Mở File : mở file txt trên máy tính của bạn
- Cách dùng : nhấn file rồi chọn open , hoăc ctrl + o
- khi mở file nếu có dữ liệu thì nó tương tự như tạo mới file , nếu có dữ liệu nó sẽhỏi có lưu file này không , rồi sau đó giao diện chọn file xuất hiện
Trang 14- Save và save : lưu file vừa tạo vào máy tính của bạn
- Cách dung : tương tự ta vào file rồi chọn save ( để lưu file đó lại , hoặc sava as đểlưu đè file đó )
Trang 15- Thoát chương trình ( có 2 cách để thoát , một là file -> exit , 2 là ấn x trên ứngdụng )
Trang 162.2 Edit
Select all : bôi đen toàn bộ văn bản
- Cách dùng nhấn ctrl + A hoặc như hình vẽ
Cut : dùng để cut đoạn văn bản đã bôi đen
- Cách dung : bôi đen văn bản rồi ân ctrl x hoặc như hình
Copy : sao chép văn bản đã bôi đen
Trang 17- Cách dùng : ấn ctrl + c hoặc như hình vẽ
Paste : dán văn bản khi đã cut hoặc copy
- Cách dung : nhấn ctrl +v hoặc như hình vẽ
Undo & Redo : quay lại và trở lại
- Cách dùng nhấn undo ( ctrl + Z ) hoặc như hình vẽ
Trang 18 Find : tìm kiếm theo từ khoá
- Cách dùng : nhấn ctrl + F hoặc như hình sau đó nhập vào từ khoá mình cần tìm rồi
ấn find
- Nó sẽ tạo một layout mới để mình nhập từ khoá cần tìm :
Trang 19 Replace : thay thế từ khoá này bằng từ khoá khác
- nhấn như hình vẽ
- nó sẽ tạo ra thêm một layout mới để mình nhập từ khoá cần thay thế
Trang 20- Cách dùng findwhat : nhâp từ khoá cần thay
rồi ấn find , xong rồi nhập từ khoá thay rồi ấn replace
Trang 212.3 Format
- Nó dùng để thay đổi font chữ kiểu chữ vào cỡ chữ , có xem trước
- Cách dùng nhấn vào format rồi chọn theo ý mình
2.4 About
- Nó là thông tin của nhóm lập trình
Trang 223 Thuật toán và code
3.1 new file ( tạo file mới )
Bắt Đầu
Trang 23Đúng
Sai
public void newFile() {
String text = taText.getText();
String[] selection = {"Save", "Don't Save", "Cancel"};
if (!text.trim().equals("") && !isSaved) {
nội dungFile rỗng
Lưu file
Kết ThúcTạo mới file
Trang 24int select = JOptionPane.showOptionDialog(null, "Do you want to save change?", "My Text Editor (MTE)", JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE, null, selection, selection[2]);
Trang 25Đúng
Sai
public void openFile() {
String text = taText.getText();
String[] selection = {"Save", "Don't Save", "Cancel"};
if (!text.trim().equals("") && !isSaved) {
nội dung File
Kết Thúc
Mở file
Trang 26int select = JOptionPane.showOptionDialog(null, "Do you want to savechange?",
"My Text Editor (MTE)", JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE, null, selection, selection[2]); switch (select) {
3.3Save & Save As
public void saveAs() {
if (taText.getText().trim().equals("")) {
Trang 27return;
}
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Save as ");
fileChooser.setFileFilter(new FileNameExtensionFilter("Text file", "txt"));
int openDialog = fileChooser.showOpenDialog(null);
if (openDialog == JFileChooser.APPROVE_OPTION) {
String path = fileChooser.getSelectedFile().toString();
File temp = new File(path);
if (temp.exists()) {
String[] yesNo = {"Yes", "No"};
int question = JOptionPane.showOptionDialog(fileChooser,
"File already existed, do you want to replace?",
"Warning!", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null, yesNo, yesNo[1]);
} catch (FileNotFoundException ex) {
Logger.getLogger(J2LP0006.class.getName()).log(Level.SEVERE, null, ex); }
Trang 28} catch (FileNotFoundException ex) {
Logger.getLogger(J2LP0006.class.getName()).log(Level.SEVERE, null, ex); }
Trang 29
sai
đúng
public void exit() {
String text = taText.getText();
String[] selection = {"Save", "Don't Save", "Cancel"};
if (!text.trim().equals("") && !isSaved) {
int select = JOptionPane.showOptionDialog(null, "Do you want to save change?",
Thoát chương trình
Kết Thúc
Trang 30"My Text Editor (MTE)", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, selection, selection[2]); switch (select) {
UndoManager undoManager = new UndoManager();
public void redo() {
try {
Trang 31public void copy() {
String selectedText = taText.getSelectedText();
StringSelection stringSelection = new StringSelection(selectedText);
clipboard.setContents(stringSelection, null);
}
public void cut() {
String selectedText = taText.getSelectedText();
StringSelection stringSelection = new StringSelection(selectedText);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(stringSelection, null);
taText.replaceSelection("");
}
public void paste() {
Transferable content = clipboard.getContents(this);
try {
String dstData = (String)content.getTransferData(DataFlavor.stringFlavor);
int position = taText.getCaretPosition();
taText.replaceRange(dstData, position, position);
} catch (UnsupportedFlavorException | IOException ex) {
Logger.getLogger(J2LP0006.class.getName()).log(Level.SEVERE, null,ex);
}
Trang 32}
public void find() {
String find = Find.tfFind.getText();
String text = J2LP0006.taText.getText();
int caretPosition = J2LP0006.taText.getCaretPosition();
}
} else {
// textPart1 = text.substring(0, caretPosition - find.length() + 1);
textPart1 = text.substring(0, caretPosition);
if (textPart1.lastIndexOf(find) >= 0) {
J2LP0006.taText.select(textPart1.lastIndexOf(find),textPart1.lastIndexOf(find) + find.length());
}
}
}
public void findOnReplace() {
String find = Replace.tfFind.getText();
String text = J2LP0006.taText.getText();
if (text.contains(find)) {
J2LP0006.taText.select(text.indexOf(find), text.indexOf(find) +find.length());
Replace.bReplace.setVisible(true);
}
Trang 33}
public void replace() {
String replace = Replace.tfReplace.getText();
if (!Replace.cbAll.isSelected()) {
J2LP0006.taText.replaceSelection(replace);
} else {
String text = J2LP0006.taText.getText();
text = text.replace(Replace.tfFind.getText(), Replace.tfReplace.getText()); System.out.println(text);
public void init() {
java.awt.Font fontDefault = J2LP0006.taText.getFont();
Trang 34DefaultListModel<String> fontList = new DefaultListModel<>();
String fonts[] =GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
for (int i = 0; i < fonts.length; i++) {
DefaultListModel<String> fontSize = new DefaultListModel<>();
for (int i = 3; i <= 48; i++) {
* This method is called from within the constructor to initialize the form
* WARNING: Do NOT modify this code The content of this method is always
* regenerated by the Form Editor
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
Trang 35jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
listFont = new javax.swing.JList<>();
jScrollPane2 = new javax.swing.JScrollPane();
listStyle = new javax.swing.JList<>();
jScrollPane3 = new javax.swing.JScrollPane();
listSize = new javax.swing.JList<>();
jPanel1 = new javax.swing.JPanel();
lSample = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
listFont.addListSelectionListener(newjavax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) { listFontValueChanged(evt);
}
});
jScrollPane1.setViewportView(listFont);
listStyle.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
Trang 36listStyle.addListSelectionListener(newjavax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) { listStyleValueChanged(evt);
}
});
jScrollPane2.setViewportView(listStyle);
listSize.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
listSize.addListSelectionListener(newjavax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) { listSizeValueChanged(evt);
javax.swing.GroupLayout jPanel1Layout = newjavax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lSample, javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
Trang 37addGroup(layout.createSequentialGroup()
addContainerGap()
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
addGap(0, 0, Short.MAX_VALUE)
addComponent(jButton1))
addGroup(layout.createSequentialGroup()
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
addComponent(jTextField1,javax.swing.GroupLayout.Alignment.LEADING)
addComponent(jScrollPane1,javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.DEFAULT_SIZE, 163, Short.MAX_VALUE)
addComponent(jLabel1,javax.swing.GroupLayout.Alignment.LEADING))
Trang 38addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
addGroup(layout.createSequentialGroup()
addComponent(jLabel2)
addGap(0, 67, Short.MAX_VALUE))
addComponent(jScrollPane2,javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
addComponent(jTextField2))
addGap(18, 18, 18)
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
addComponent(jLabel3,javax.swing.GroupLayout.DEFAULT_SIZE, 61, Short.MAX_VALUE)
addComponent(jScrollPane3,javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
addGroup(layout.createSequentialGroup()
addContainerGap()
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
addComponent(jLabel1)
addComponent(jLabel2)
addComponent(jLabel3))
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
addComponent(jTextField1,javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
Trang 39addComponent(jTextField2,javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
addComponent(jTextField3,javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
addComponent(jScrollPane2,javax.swing.GroupLayout.PREFERRED_SIZE, 147,javax.swing.GroupLayout.PREFERRED_SIZE)
addComponent(jScrollPane1,javax.swing.GroupLayout.PREFERRED_SIZE, 147,javax.swing.GroupLayout.PREFERRED_SIZE)
addComponent(jScrollPane3,javax.swing.GroupLayout.PREFERRED_SIZE, 147,javax.swing.GroupLayout.PREFERRED_SIZE))
addGap(18, 18, 18)
addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
Trang 40int style = listStyle.getSelectedIndex();
try {
int size = Integer.parseInt(listSize.getSelectedValue());
lSample.setFont(new java.awt.Font(name, style, size));
int size = Integer.parseInt(listSize.getSelectedValue());
lSample.setFont(new java.awt.Font(name, style, size));
int size = Integer.parseInt(listSize.getSelectedValue());
lSample.setFont(new java.awt.Font(name, style, size));
} catch (Exception e) {
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
String name = listFont.getSelectedValue();
int style = listStyle.getSelectedIndex();
try {
int size = Integer.parseInt(listSize.getSelectedValue());
J2LP0006.taText.setFont(new java.awt.Font(name, style, size));
setVisible(false);
} catch (Exception e) {
}