摘 要
為了使自己熟悉Java編譯,了解更多的面向?qū)ο笳Z言的編程策略。進(jìn)而,深入了解Java語言的操作、及原理等。因此我開發(fā)了一個(gè)記事本,使自己可以鞏固知識(shí),加深記憶。設(shè)計(jì)一個(gè)簡(jiǎn)易記事本,能夠記錄使用者輸入的信息,同時(shí)可以實(shí)現(xiàn)保存輸入的信息,以方便后期查看。同時(shí)可以支持保存后后期的修改,那就是插入文件后再次修改。在此款簡(jiǎn)易記事里面,可以寫文檔,同時(shí)也可以保存、刪除等功能??梢栽谟浭卤纠锩娓鼡Q字體顏色,字體也可以變換大小。同時(shí)也可以打開文件夾里面的文檔。里面字體設(shè)置的是宋體。
關(guān)鍵詞 ?JAVA ?io流 容器 組件 ?GUI
第一章 概述
1.1?引言?
???記事本是一個(gè)很用的程序,主要包括對(duì)文件的儲(chǔ)存、修改等編輯功能;還有復(fù)制、粘貼等。同時(shí)在此記事本可以改變字體大小顏色等。
1.2?設(shè)計(jì)背景
1.2.1Java簡(jiǎn)介
?Java具有以下特點(diǎn),是目前軟件設(shè)計(jì)中優(yōu)秀的編程語言。Java不僅可以用來開發(fā)大型的應(yīng)用程序,而且特別適合于Internet的開發(fā)。Java確實(shí)具備了“一旦攜程處處可用”的特點(diǎn),這也是Java最初風(fēng)靡全球的原因。
1.2.2Java語言特點(diǎn)
- 簡(jiǎn)單性:因?yàn)镴ava在C++之上設(shè)計(jì)出來的,設(shè)計(jì)者把C++的一些特性去掉了,這些特性在實(shí)際開發(fā)中,程序員也很少用到。
- 面向?qū)ο螅篔ava是一款面向?qū)ο蠡Z言。
- 平臺(tái)無關(guān):Java語言和其他語言相比,最大的優(yōu)勢(shì)就是編寫的軟件能在執(zhí)行碼上兼容,在所有的計(jì)算機(jī)上運(yùn)行。(只要平臺(tái)提供了Java運(yùn)行的環(huán)境,Java編寫的軟件就能在其上運(yùn)行。)
- 多線程:內(nèi)置對(duì)多線程的支持。多線程允許同時(shí)完成多個(gè)任務(wù)。
- 多態(tài)
第二章 總體設(shè)計(jì)
2.1 ?界面設(shè)計(jì)
在主界面中設(shè)計(jì)一個(gè)JFrame 容器,并在其中加入文本域、下拉菜單等。
2.2?功能設(shè)計(jì)
首先建立框架,確定好設(shè)計(jì)的內(nèi)容。根據(jù)內(nèi)容找到相應(yīng)的資料后,開始編寫代碼。
框架流程圖
2.3?系統(tǒng)功能設(shè)計(jì)
2.3.1?功能設(shè)計(jì)
???在下拉菜單中加入子菜單進(jìn)行監(jiān)視,分別實(shí)現(xiàn)對(duì)文件的操作功能。點(diǎn)擊不同的菜單選項(xiàng)時(shí),進(jìn)行不同的操作。
功能框架流程圖
2.3.3?代碼設(shè)計(jì)
??編寫每個(gè)控件的相關(guān)代碼,并進(jìn)行調(diào)試。
??創(chuàng)建了一個(gè)標(biāo)題為“簡(jiǎn)易記事本”的窗口,包括菜單條,菜單,菜單項(xiàng)。找準(zhǔn)每個(gè)大類和他相對(duì)應(yīng)的子類然后對(duì)其實(shí)現(xiàn)功能。
- 對(duì)文件的新建、打開、保存、另存、退出。
- 對(duì)文本復(fù)制、粘貼等
- 對(duì)字體的大小改變,顏色改變
第三章 詳細(xì)設(shè)計(jì)
3.1?開發(fā)工具的選用及其介紹
3.1.1界面設(shè)計(jì)
先創(chuàng)建一個(gè)GUI界面,再往里面依次填東西,首先是窗口,設(shè)置窗口的大小,填入文本區(qū)域,設(shè)置在里面的字體,添面板、菜單條。菜單條里面增加菜單,菜單里面加入菜單項(xiàng),然后分別給菜單項(xiàng)設(shè)置一些功能。
3.1.2 界面調(diào)試
確定主窗體,設(shè)置窗體的屬性,對(duì)窗體進(jìn)行布局,加入所需控件并對(duì)控件進(jìn)行初始化。在完成加入菜單控件后,不能缺少setJMenuBar(cdl); 因?yàn)檫@是讓菜單條可見。把menubar設(shè)置到JFame中。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-767704.html
3.1.2 界面調(diào)試
確定主窗體,設(shè)置窗體的屬性,對(duì)窗體進(jìn)行布局,加入所需控件并對(duì)控件進(jìn)行初始化。在完成加入菜單控件后,不能缺少setJMenuBar(cdl); 因?yàn)檫@是讓菜單條可見。把menubar設(shè)置到JFame中。
3.2?詳細(xì)模塊設(shè)計(jì)
3.2.1打開、使用
功能說明
利用代碼運(yùn)行成功后,打開窗口。既可以輸入文字。在輸入文字的同時(shí)可以選擇文字的顏色、字體等。完成后可以選擇保存等功能。在文本區(qū)域可以選擇復(fù)制粘貼等功能來完成最后的結(jié)果。
程序代碼
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.*;
public class note {
public static void main(String[] args) {
creatGUI();
}
public static void creatGUI() {
//創(chuàng)建可視化窗口/
JFrame f = new JFrame("記事本");
//設(shè)定顯示位置,左上角為(0,0),根據(jù)筆記本電腦的顯示分辨率設(shè)置成在正中間顯示
f.setLocation(200, 100);//這是顯示窗口的左上角坐標(biāo)
//設(shè)定窗口大小為屏幕1/2倍(電腦顯示分辨率)
f.setSize(800, 540);//我電腦顯示分辨率為1920*1080
//創(chuàng)建文本域用來打字顯示出來的
JTextArea WBY = new JTextArea("");
//這里可以輸入東西到時(shí)候打開窗體自動(dòng)顯示出來
WBY.setFont(new Font("", Font.BOLD, 25));
//設(shè)置文本域?yàn)樽詣?dòng)換行
WBY.setLineWrap(true);
//將文本域添加到含有下拉框的面板中,因?yàn)槲谋緟^(qū)不帶滾動(dòng)條,
//需要把文本區(qū)放到滾動(dòng)窗格中,
JScrollPane MB = new JScrollPane(WBY);
//將含有下拉框的面板放入內(nèi)容面板中
f.add(MB);
//創(chuàng)建一個(gè)菜單欄,實(shí)例化
JMenuBar cdl = new JMenuBar();
//創(chuàng)建菜單欄上的5個(gè)菜單并且設(shè)置字體和大小
JMenu m1 = new JMenu("文件");
JMenu m2 = new JMenu("編輯");
JMenu m3 = new JMenu("字體大小");
JMenu m4 = new JMenu("字體顏色");
JMenu m5 = new JMenu("幫助文檔");
m1.setFont(new Font("", Font.BOLD, 15));
m2.setFont(new Font("", Font.BOLD, 15));
m3.setFont(new Font("", Font.BOLD, 15));
m4.setFont(new Font("", Font.BOLD, 15));
m5.setFont(new Font("", Font.BOLD, 15));
//在菜單的基礎(chǔ)上創(chuàng)建下拉可選菜單項(xiàng)按鈕
JMenuItem x1 = new JMenuItem("新建");
JMenuItem x2 = new JMenuItem("保存");
JMenuItem x3 = new JMenuItem("打開");
JMenuItem x4 = new JMenuItem("退出");
JMenuItem x5 = new JMenuItem("復(fù)制");
JMenuItem x6 = new JMenuItem("粘貼");
JMenuItem x7 = new JMenuItem("裁剪");
JMenuItem x8 = new JMenuItem("刪除");
JMenuItem x9 = new JMenuItem("大");
JMenuItem x10 = new JMenuItem("中");
JMenuItem x11 = new JMenuItem("小");
JMenuItem x12 = new JMenuItem("紅色");
JMenuItem x13 = new JMenuItem("綠色");
JMenuItem x14 = new JMenuItem("藍(lán)色");
JMenuItem x15 = new JMenuItem("黑色");
JMenuItem x16 = new JMenuItem("百度");
//為下拉可選菜單項(xiàng)設(shè)置字體和大小
x1.setFont(new Font("s", Font.BOLD, 20));
x2.setFont(new Font("s", Font.BOLD, 20));
x3.setFont(new Font("s", Font.BOLD, 20));
x4.setFont(new Font("s", Font.BOLD, 20));
x5.setFont(new Font("s", Font.BOLD, 20));
x6.setFont(new Font("s", Font.BOLD, 20));
x7.setFont(new Font("s", Font.BOLD, 20));
x8.setFont(new Font("s", Font.BOLD, 20));
x9.setFont(new Font("s", Font.BOLD, 40));
x10.setFont(new Font("s", Font.BOLD, 30));
x11.setFont(new Font("s", Font.BOLD, 20));
x12.setFont(new Font("s", Font.BOLD, 20));
x13.setFont(new Font("s", Font.BOLD, 20));
x14.setFont(new Font("s", Font.BOLD, 20));
x15.setFont(new Font("s", Font.BOLD, 20));
x16.setFont(new Font("s", Font.BOLD, 20));
//給顏色下拉菜單項(xiàng)分別設(shè)置相應(yīng)的背景色,這樣展現(xiàn)就會(huì)直觀一點(diǎn)了
x12.setBackground(Color.RED);
x13.setBackground(Color.GREEN);
x14.setBackground(Color.BLUE);
x15.setBackground(Color.BLACK);
//實(shí)現(xiàn)新建記事本按鈕的功能
x1.addActionListener(e -> {
creatGUI();
});//再次調(diào)用該方法創(chuàng)建另外一個(gè)記事本
//實(shí)現(xiàn)保存記事本按鈕的功能
x2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e2) {
//創(chuàng)建一個(gè)窗體并且設(shè)置窗體標(biāo)題和保存功能
FileDialog fileDialog = new FileDialog(f, "保存文件至", FileDialog.SAVE);
//保存文件的對(duì)話框設(shè)置為可見
fileDialog.setVisible(true);
//獲取保存的路徑和設(shè)置的文件名
String absPath = fileDialog.getDirectory() + fileDialog.getFile();
try {//用來檢測(cè)是否設(shè)置了保存路徑
//設(shè)置輸出文件名為保存的路徑下面的文件名
BufferedWriter wr = new BufferedWriter(new FileWriter(absPath));
//獲取文本域字符串
String s = WBY.getText();
//開始寫入
wr.write(s);
//寫完關(guān)閉
wr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
//實(shí)現(xiàn)打開記事本按鈕的功能
x3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e2) {
//創(chuàng)建一個(gè)窗體并且設(shè)置窗體標(biāo)題和打開功能
FileDialog fileDialog = new FileDialog(f, "打開文件", FileDialog.LOAD);
//打開文件的對(duì)話框設(shè)置為可見
fileDialog.setVisible(true);
//獲取打開的路徑和設(shè)置的文件名
String absPath = fileDialog.getDirectory() + fileDialog.getFile();
try {//用來檢測(cè)是否設(shè)置了打開路徑
//設(shè)置讀入文件名為打開的路徑下面的文件名
BufferedReader re = new BufferedReader(new FileReader(absPath));
String line;
while ((line = re.readLine()) != null)
//只要文件中不為空就不斷追加到文本框中
WBY.append(line + '\n');
//讀取完畢結(jié)束
re.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
//實(shí)現(xiàn)退出記事本按鈕的功能
x4.addActionListener(e -> System.exit(0));
//調(diào)用文件工具箱下的系統(tǒng)剪貼板方法
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
//實(shí)現(xiàn)復(fù)制文本按鈕的功能
x5.addActionListener(e -> {
//將選中的文本內(nèi)容存入text中
String text = WBY.getSelectedText();
//傳送到字符串里面存著
StringSelection selection = new StringSelection(text);
//將得到的內(nèi)容放入到剪切板中
clipboard.setContents(selection, null);
});
//實(shí)現(xiàn)粘貼文本按鈕的功能
x6.addActionListener(e -> {
//獲取系統(tǒng)剪貼板中的內(nèi)容
Transferable text = clipboard.getContents(null);
//判斷剪貼板中的內(nèi)容是否支持文本
if (text.isDataFlavorSupported(DataFlavor.stringFlavor)) {
try {
//強(qiáng)制轉(zhuǎn)換剪貼板中的內(nèi)容
String text1 = (String) text.getTransferData(DataFlavor.stringFlavor);
//獲取當(dāng)前光標(biāo)的位置
int n = WBY.getCaretPosition();
//插入復(fù)制的內(nèi)容到文本框的光標(biāo)后面
WBY.insert(text1, n);
} catch (Exception e2) {
e2.printStackTrace();
}
}
});
//實(shí)現(xiàn)裁剪文本按鈕的功能
x7.addActionListener(e -> {
//將得到的選擇文本內(nèi)容存入text中
String text = WBY.getSelectedText();
//傳送到字符串里面存著
StringSelection selection = new StringSelection(text);
//將得到的內(nèi)容放到剪切板中
clipboard.setContents(selection, null);
//將選中文本start到end之間的內(nèi)容替換為空白""
WBY.replaceRange("", WBY.getSelectionStart(), WBY.getSelectionEnd());
});
//實(shí)現(xiàn)刪除文本按鈕的功能
x8.addActionListener(e -> {
//將選中文本start到end之間的內(nèi)容替換為空白
WBY.replaceRange("", WBY.getSelectionStart(), WBY.getSelectionEnd());
});
//實(shí)現(xiàn)字體變大的功能
x9.addActionListener(e -> {
WBY.setFont(new Font("", Font.BOLD, 40));
});
//實(shí)現(xiàn)字體變中等大小的功能
x10.addActionListener(e -> {
WBY.setFont(new Font("", Font.BOLD, 30));
});
//實(shí)現(xiàn)字體變小的功能
x11.addActionListener(e -> {
WBY.setFont(new Font("", Font.BOLD, 20));
});
//實(shí)現(xiàn)字體顏色變紅的功能
x12.addActionListener(e -> {
WBY.setForeground(Color.RED);
});
//實(shí)現(xiàn)字體顏色變綠的功能
x13.addActionListener(e -> {
WBY.setForeground(Color.GREEN);
});
//實(shí)現(xiàn)字體顏色變藍(lán)的功能
x14.addActionListener(e -> {
WBY.setForeground(Color.BLUE);
});
//實(shí)現(xiàn)字體顏色變黑的功能
x15.addActionListener(e -> {
WBY.setForeground(Color.BLACK);
});
//實(shí)現(xiàn)打開幫助文檔的功能
x16.addActionListener(e -> {
//創(chuàng)建消息提示框,包括顯示內(nèi)容和彈窗標(biāo)題
JOptionPane.showMessageDialog(f,
"百度!", "提示", JOptionPane.INFORMATION_MESSAGE);
});
//分別給5個(gè)菜單添加各自的下拉菜單項(xiàng)
m1.add(x1);
m1.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m1.add(x2);
m1.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m1.add(x3);
m1.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m1.add(x4);
m2.add(x5);
m2.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m2.add(x6);
m2.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m2.add(x7);
m2.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m2.add(x8);
m3.add(x9);
m3.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m3.add(x10);
m3.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m3.add(x11);
m4.add(x12);
m4.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m4.add(x13);
m4.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m4.add(x14);
m4.addSeparator();//兩個(gè)菜單項(xiàng)之間添加界線
m4.add(x15);
m5.add(x16);
//添加這5個(gè)菜單到菜單欄
cdl.add(m1);
cdl.add(m2);
cdl.add(m3);
cdl.add(m4);
cdl.add(m5);
//給窗體添加完善好的菜單欄
f.setJMenuBar(cdl);
//記事本設(shè)置為可見
f.setVisible(true);
//點(diǎn)擊×號(hào)結(jié)束應(yīng)用程序
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}
?文章來源:http://www.zghlxwxcb.cn/news/detail-767704.html
?
到了這里,關(guān)于Java小程序-記事本的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!