如何用java一步步编出一个记事本程序
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.UndoManager;
import java.util.Date;
import java.text.SimpleDateFormat;
public class Notepad extends JFrame {
// 菜单
JMenuBar menub = new JMenuBar();
// 显示纯文本的多行区域
JTextArea text = new JTextArea();
JMenu files = new JMenu("文件(F)");
JMenu edit = new JMenu("编辑(E)");
JMenu formats = new JMenu("格式(O)");
JMenu help = new JMenu("帮助(H)");
JMenuItem newFile = new JMenuItem("新建(N)");
JMenuItem open = new JMenuItem("打开(O)");
JMenuItem save = new JMenuItem("保存(S)");
JMenuItem saveAs = new JMenuItem("另存为(A)");
JMenuItem exit = new JMenuItem("退出(X)");
JMenuItem undo = new JMenuItem("撤销(U)");
JMenuItem cut = new JMenuItem("剪切(T)");
JMenuItem copy = new JMenuItem("复制(C)");
JMenuItem paste = new JMenuItem("粘贴(P)");
JMenuItem selectAll = new JMenuItem("全选(A)");
JMenuItem timeDate = new JMenuItem("时间/日期(D)");
JCheckBoxMenuItem lineWrap = new JCheckBoxMenuItem("自动换行(M)");
JMenuItem fonts = new JMenuItem("字体");
JMenuItem about = new JMenuItem("关于记事本(A)");
JFrame th = this;
String name;
String openedPath = null;
boolean opened = false;
boolean reworked = false;
UndoManager undoManager = new UndoManager();
// 初始化窗体
public Notepad(String name) {
super(name);
this.name = name;
int x, y;
// 得到用户屏幕大小
Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
x = (size.width - 600) / 2;
y = (size.height - 400) / 2;
setSize(600, 400);
// 让程序界面显示在屏幕中央
setLocation(x, y);
// 将此窗口的最小大小设置为一个常量值。
setMinimumSize(new Dimension(250, 150));
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
// 初始化布局
void init() {
files.setMnemonic('F');
edit.setMnemonic('E');
formats.setMnemonic('O');
help.setMnemonic('H');
newFile.setMnemonic('N');
open.setMnemonic('O');
save.setMnemonic('S');
saveAs.setMnemonic('A');
exit.setMnemonic('X');
undo.setMnemonic('U');
cut.setMnemonic('T');
copy.setMnemonic('C');
paste.setMnemonic('P');
selectAll.setMnemonic('A');
timeDate.setMnemonic('D');
lineWrap.setMnemonic('M');
about.setMnemonic('A');
// 为控件添加助记符
newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
InputEvent.CTRL_MASK));
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
InputEvent.CTRL_MASK));
// 为控件添加快捷键
timeDate.setAccelerator(KeyStroke.getKeyStroke("F5"));
files.add(newFile);
files.add(open);
files.add(save);
files.add(saveAs);
files.addSeparator();
files.add(exit);
edit.add(undo);
edit.addSeparator();
edit.add(cut);
edit.add(copy);
edit.add(paste);
edit.addSeparator();
edit.add(selectAll);
edit.add(timeDate);
formats.add(lineWrap);
formats.add(fonts);
help.add(about);
menub.add(files);
menub.add(edit);
menub.add(formats);
menub.add(help);
setJMenuBar(menub);
getContentPane().add(new JScrollPane(text));
Listen listen = new Listen();
Listen1 listen1 = new Listen1();
// 为控件添加事件侦听器
newFile.addActionListener(listen);
undo.addActionListener(listen);
open.addActionListener(listen);
save.addActionListener(listen);
saveAs.addActionListener(listen);
exit.addActionListener(listen);
cut.addActionListener(listen);
copy.addActionListener(listen);
paste.addActionListener(listen);
selectAll.addActionListener(listen);
timeDate.addActionListener(listen);
lineWrap.addActionListener(listen);
about.addActionListener(listen);
open.addActionListener(listen1);
save.addActionListener(listen1);
saveAs.addActionListener(listen1);
// 暂时没有实现的功能 :设置字体
//undo功能没有实现
fonts.setEnabled(false);
}
class Listen implements ActionListener {
// 实现用于一般操作的事件侦听器
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == newFile) {
text.setText("");
// 设置标题
th.setTitle(name);
openedPath = null;
opened = false;
} else if (source == exit)
setVisible(false);
else if (source == undo)
try {
//此功能没有实现 撤销要用栈?
// undo.setEnabled(undoManager.canUndo());
undoManager.undo();
} catch (CannotRedoException cre) {
cre.printStackTrace();
}
else if (source == selectAll)
text.selectAll();
else if (source == cut)
text.cut();
else if (source == copy)
text.copy();
else if (source == paste)
text.paste();
else if (source == lineWrap)
// 设置文本区的换行策略(获取文本区的换行策略)
text.setLineWrap(!text.getLineWrap());
else if (source == about) {
String message = "--------
版本:1.0
作者:时超" +
"
撤销功能要用堆栈存贮操作" +
"
还有字体格式"+
"
暂时没有实现" +
"
感谢您的使用";
JOptionPane.showMessageDialog(th, message, "关于",
JOptionPane.PLAIN_MESSAGE);
} else if (source == timeDate) {
Date nowTime = new Date();
SimpleDateFormat times = new SimpleDateFormat(
"HH:mm yyyy-MM-dd");
text.insert(times.format(nowTime), text.getCaretPosition());
}
}
}
class Listen1 implements ActionListener {
// 实现用于对文件进行操作的事件侦听器
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
// 打开文件事件
if (source == open) {
// 显示对话窗口 以便选择文件
FileDialog openFile = new FileDialog(th, "打开文件",
FileDialog.LOAD);
openFile.setVisible(true);
// 获取文件路径
String filePath = openFile.getDirectory() + openFile.getFile();
try {
FileInputStream fis = new FileInputStream(filePath);
byte[] content = new byte[fis.available()];
fis.read(content);
text.setText(new String(content));
// 设置 TextComponent 的文本插入符的位置
text.setCaretPosition(0);
if (openFile.getFile() != null) {
th.setTitle(openFile.getFile() + name);
openedPath = filePath;
opened = true;
}
fis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
opened = true;
}
// 保存及另存为事件
else if (source == save || source == saveAs) {
String savePath = openedPath;
if (savePath == null || source == saveAs) {
// 如果 mode 的值为 LOAD,那么文件对话框将查找要读取的文件,所显示的文件是当前目录中的文件
// 如果 mode 的值为 SAVE,则文件对话框将查找要写入文件的位置。
FileDialog saveFile = new FileDialog(th, "保存文件",
FileDialog.SAVE);
saveFile.setVisible(true);
savePath = saveFile.getDirectory() + saveFile.getFile();
}
try {
FileOutputStream fos = new FileOutputStream(savePath);
fos.write(text.getText().getBytes());
fos.close();
} catch (Exception ex) {
ex.printStackTrace();
}
if (source == save)
openedPath = savePath;
}
}
}
public static void main(String[] args) {
try {
// 使用当前线程的上下文类加载器加载给定类名称所指定的 LookAndFeel
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.err.println("Couldn't use the system look and feel:" + e);
}
String name = ("--记事本 版本1.0--");
Notepad note = new Notepad(name);
note.init();
note.setVisible(true);
}
}
这个你要直接的code给你我是没有的,我给你的答案是用编辑器自己编写,如果你没有java基础,你要学,如果你不会java swing,也要学,当你写出来了,你会发现,剩下的几个问题都引刃而解
一、要创建一个Frame或者JFrame现在基本上都用后者二、要建立你的控件,就是面板Jpanel菜单JMenu\JMenuItem等,写字板textArea等,
三、动作监听器,addActionListener
四、就是你的布局了
一下是一个可以运行的,你看看
package mySwing;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.color.*;
import java.awt.font.*;
import javax.swing.plaf.metal.MetalLookAndFeel;
import javax.swing.undo.*;
public class Note extends JFrame {
boolean isChange = false;
boolean wasChange = false;
JMenuBar menuBar = new JMenuBar();
JMenu menuFile = new JMenu("File");
JMenuItem menuFileOpen = new JMenuItem("Open..");
JMenuItem menuFileSave = new JMenuItem("Save..");
JMenuItem menuFileExit = new JMenuItem("Exit");
JMenu menuEdit = new JMenu("Edit");
JMenuItem menuFileCut = new JMenuItem("Cut");
JMenuItem font = new JMenuItem("Font");
JMenuItem menuFilePaste = new JMenuItem("Paste");
JTextArea fileArea = new JTextArea();
public Note() {
//menuFile.setIcon(new ImageIcon("D:\\���컢���ļ�\\eclipswork\\MyTest\\bin\\remove.png"));
// fileArea.setBorder(BorderFactory.createTitledBorder("mytextArea"));
this.setTitle("���±�");
Toolkit tool = this.getToolkit();// ����ͼ�꣡
Image myimage = tool.getImage("����.jpg");
this.setIconImage(myimage);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
exit();
}
});
menuFileOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//fileOpen_actionPerformed(e);
}
});
menuFileSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileSave_actionPerformed(e);
}
});
menuFileExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileExit_actionPerformed(e);
}
});
menuFileCut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileCut_actionPerformed(e);
}
});
menuFilePaste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
filePaste_actionPerformed(e);
}
});
font.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileColor_actionPerformed(e);
}
});
fileArea.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}
public void removeUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}
public void changedUpdate(DocumentEvent e) {
wasChange = isChange;
isChange = true;
}
});
setSize(500, 450);
menuBar.add(menuFile);
menuFile.setMnemonic('F');
menuBar.add(menuEdit);
menuEdit.setMnemonic('E');
menuFile.add(menuFileOpen);
menuFileOpen.setMnemonic('O');// ���ʽ�;
menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));// ��ݽ�;
menuFile.add(menuFileSave);
menuFileSave.setMnemonic('S');
menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
menuFile.addSeparator();
menuFile.add(menuFileExit);
menuFileExit.setMnemonic('E');
menuEdit.add(menuFileCut);
menuFileCut.setMnemonic('C');
menuFileCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
menuEdit.add(menuFilePaste);
menuFilePaste.setMnemonic('P');
menuFilePaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
InputEvent.CTRL_MASK));
menuEdit.add(font);
font.setMnemonic('N');
font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
this.getContentPane().add(new JScrollPane(fileArea));
setJMenuBar(menuBar);
fileArea.setLineWrap(true);
}
public void fileExit_actionPerformed(ActionEvent e) {
System.exit(0);
}
public void fileOpen_actionPerformed(ActionEvent e) {
// ������filter;
JFileChooser fileChooser = new JFileChooser();
// fileChooser.addChoosableFileFilter(new
// myFilter("*.txt","Files(*.txt)"));
fileChooser.addChoosableFileFilter(fileChooser.getFileFilter());
if (fileChooser.APPROVE_OPTION != fileChooser.showOpenDialog(this))
return;
// �������ļ���
BufferedReader dataIn = null;
try {
dataIn = new BufferedReader(new FileReader(fileChooser
.getSelectedFile().getPath()));
String c = null;
do {
c = dataIn.readLine();
if (c != null)
fileArea.append(c + "\n");
} while (c != null);
} catch (Exception ex) {
System.out.println("Catch exception:" + ex.toString());
}
}
public void exit() {
if (isChange == false)
System.exit(1);
else {
int decision = JOptionPane.showConfirmDialog(this,
"The File has Change.\n"
+ "Do you want to save the change?", "Notepad",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE);
if (decision == JOptionPane.YES_OPTION) {
// �����ǽ��ļ�д������!
try {
JFileChooser fileSave = new JFileChooser();
fileSave.setDialogTitle("�����ļ�");
// fileSave.addChoosableFileFilter(new
// myFilter("*.txt","Files(*.txt)"));
fileSave.addChoosableFileFilter(fileSave.getFileFilter());
if (fileSave.APPROVE_OPTION != fileSave
.showSaveDialog(this))
return;
BufferedWriter dataOut = new BufferedWriter(
new BufferedWriter(new FileWriter(fileSave
.getSelectedFile())));
String c = null;
isChange = false;
do {
String str = fileArea.getText();
dataOut.write(str);
dataOut.close();
} while (c != null);
} catch (Exception e2) {
System.out.println("Catch exception:���!" + e2.toString());
}
} else if (decision == JOptionPane.NO_OPTION)
System.exit(1);
else if (decision == JOptionPane.CANCEL_OPTION)
;
;
}
// innerclass.fileSave_actionPerformed();
}
public void fileSave_actionPerformed(ActionEvent e1) {
// �����ǽ��ļ�д������!
try {
JFileChooser fileSave = new JFileChooser();
fileSave.setDialogTitle("�����ļ�");
// fileSave.addChoosableFileFilter(new
// myFilter("*.txt","Files(*.txt)"));
fileSave.addChoosableFileFilter(fileSave.getFileFilter());
if (fileSave.APPROVE_OPTION != fileSave.showSaveDialog(this))
return;
BufferedWriter dataOut = new BufferedWriter(new BufferedWriter(
new FileWriter(fileSave.getSelectedFile() + ".txt")));
// RandomAccessFile dataOut=new
// RandomAccessFile(fileSave.getSelectedFile(),"rw");
String c = null;
isChange = false;
do {
String str = fileArea.getText();
dataOut.write(str);
dataOut.close();
} while (c != null);
} catch (Exception e2) {
System.out.println("Catch exception:���!" + e2.toString());
}
}
public static void main(String arg[]) {
//new MyUIManager();
Note nt = new Note();
JLookAndFeelMenu menu = new JLookAndFeelMenu(nt);
nt.menuBar.add(menu);
nt.show();
}
public void fileCut_actionPerformed(ActionEvent e) {
fileArea.cut();
}
public void filePaste_actionPerformed(ActionEvent e) {
fileArea.paste();
}
public void fileColor_actionPerformed(ActionEvent e) {
JColorChooser fileColor = new JColorChooser();
// fileArea.setForeground(fileColor.showDialog(this,"��ɫ",Color.red));
// fileArea.setSelectionColor(fileColor.showDialog(this,"��ɫ",Color.red));
fileArea.setSelectionColor(fileColor
.showDialog(this, "��ɫ", Color.black));
}
}
首先是功能划分!
就是你要实现什么功能!
就拿windowsxp的notepad说,功能就那几个!
实现的功能划分出来就开始界面设计了!设计成什么样的,
菜单有哪些,怎么布局,这就开始设计界面部分了!
然后就开始代码,代码首先是写出界面!
然后添加相应的事件!
然后调试bug,这样一个记事本就完成了!
把java swing,io包熟悉下 然后可以先把界面做出来 再实现功能
首先你分析 你想写的记事本的功能是怎么样的
根据你的需求设计界面
核心当然是文件流的操作啦
没学过JAVA,应该跟别的编程语言差不多吧?
java有什么用
4、制定详细的学习计划 拥有一定的专业知识基本后,接下去大家务必制订一套行得通的学习规划。这里我关键指的是详细的学习培训线路。尽管Java学起来非常简单,但大家如果要学精学透,就得由浅入深的一步步把握。5、学会总结 学编程有一个禁忌,那就是学了新的知识,就把之前的知识忘记了。这时候就要...
学java应该从哪里开始?
一、学习基础语言:掌握基础语言是非常重要的一个步骤。在学习过程中,如果你不了解基础语言知识,在后期就会出现不知道该做什么的情况,但不是要求你把所有的基础知识背熟,最重要的是掌握Java的核心概念和编码技术,这样对于理解代码知识有很大的帮助。千锋教育就有线上免费Java线上公开课。二、开始编写...
如何搭建Java开发环境 使用eclipse开发Java程序
然后,输入javac Test.java 编译 Test.java文件 没有提示,说明已经成功编译!接着 输入 java Test ,运行编译好的java程序。输出:Hello World by http:\/\/blog.csdn.net\/unix21 说明我们的环境变量设置正确。其实是生成了 Test.class文件。二、使用eclipse从头一步步创建java项目 1.下载eclipse 官网...
怎么快速入门一个老的java项目
快速上手Java项目,就是着手去做,按照项目流程一步步实施,Java项目流程:需求分析---总体规划---详细设计---项目实施。所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。可以说,在软件工程当中的“需求分析”就是确定要...
Android为什么选择Java作为开发语言
如果要让一个app(应用程序)能够在各种不同的平台设备上运行,开发语言就必须跨平台。有两层意思:一个是跨操作系统,另一个是跨硬件,而我们所说的就是跨硬件。2、因为当时Java语言是一个相当成熟的计算机编程语种,除了基础类库完善,各种高效的第三方组件更是不计其数,最最重要的一点是Java虚拟机...
如何从零开始学习Java?
Java是一门编程语言,属于软件的范畴,软件是基于硬件来运行的,先了解计算机硬件系统。柠檬学院李伟:萌新从零开始系统性获得电脑知识zhuanlan.zhihu.com2. 认识一下什么是Java。柠檬学院李伟:什么是JAVAzhuanlan.zhihu.com3. Java的学前准备。联网电脑一台,台式机或者笔记本都行。配置建议:4核(或以上...
零基础的人应该怎么自学java
1、学习Java可以做网站 Java可以用来编写网站,现在很多大型网站都用Jsp写的,JSP全名Java Server Pages 它是一种动态网页技术,比如我们熟悉的163,一些政府网站都是采用JSP编写的。所以学习Java的同学可以找开发网站方面的工作,而且现在找这方面的岗位比较多。比如:网站开发,当然就是JSP+Servlet+JavaBean...
应该怎样学习JAVA?顺序是什么?
只要学习编程,数据库是一定要学习的,是一门公共的学科。java、C、python、C#等程序员都需要学习数据库。数据库产品很多: MySQL、Oracle、SqlServer、DB2...我们动力节点数据库课程包括:MySQL + Oracle Oracle:银行、政府使用oracle的较多。MySQL:互联网公司、一般企业使用MySQL较多。Oracle我们是提供视频...
如何快速学习java编程语言?
也就能坚持下来了。所以说把Java当成一种乐趣很重要。其次给自己设定小目标,然后一步步的打好基础,有计划的去学习,这样才能学好Java。没有计划的去学只会越来越乱。最后主要贵在坚持,对每一步知识点的掌握都需要坚持不断的去练习,只有一步步的打好基础,对于后面高难度的代码编程的学习是很好的...
零基础学java应该从哪里开始?
第三阶段要掌握Linux、Docker、Vue、SpringBoot、Shiro、分布式事务的使用等,可以熟练使用Docker 完成项目部署;第四阶段掌握JUC、Zookeeper、Dubbo、MySQL 高级、MyCat和微信小程序以及微信支付的开发等内容。如果想了解Java更多相关知识,建议到千锋教育了解一下。千锋教育目前在18个城市拥有22个校区,年培养...
杨怀瑞科: 如果是创建一个txt文件的话,用这个方法就可以,输入要创建那个txt文件路径,包括要创建的txt文件名称,比如:D:/javaTest/javaTest.txt,然后运行即可public static String createFile(String pathStr) throws IOException{File path=new File(...
老边区18716118748: 如何用java代码写一个记事本 - ?
杨怀瑞科: 你都粘在一起了 改成下面就可以了. import java.awt.Frame;public class MyTest {public static void main(String[] args) {Frame w = new Frame();w.show();}}
老边区18716118748: 用Java语言编写一个记事本程序 - ?
杨怀瑞科: import java.awt.*; import java.awt.event.*; import java.io.FileReader; import java.io.FileWriter; import javax.swing.JFileChooser; import java.awt.*; import java.awt.event.*; import java.io.FileReader; import java.io.FileWriter; import javax.swing....
老边区18716118748: 用JAVA编个简单的记事本程序 - ?
杨怀瑞科: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; class Editer1 implements ActionListener { JFrame f; JTextArea input; JMenuItem menuItemopen,menuItemsave,menuItemquit; String filename=""; String directory="...
老边区18716118748: java编写简单记事本 - ?
杨怀瑞科: 方法/步骤 下载JDK,并安装成功,CMD测试Java环境安装成功.出现如下提示则Java环境安装成功 打开mycelipse进入主界面,点击左上角file--new---java project,新建一个Java项目,项目名字任意取,这里我取名为note--然后点击完成,创建...
老边区18716118748: 怎么样用java编写一个记事本程序 - ?
杨怀瑞科: …………这个问题也太宽泛了吧,一般用swt或是swing来画界面.
老边区18716118748: 用JAVA写记事本程序~ - ?
杨怀瑞科: java记事本源代码import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing.event.*; import java.util.*; //Date needed import java.io.PrintWriter; public class NotePad extends JFrame {JTextArea jta;class newl implements ...
老边区18716118748: java编写简单的记事本程序!!求助!作业!请附带稍微详细一点的文档说明!说明都有什么,怎么运行!! - ?
杨怀瑞科: 给你个做好了的Java的源程序的记事本,自己看看就行了的,不怎么难的··· 文件名 MyNotepad .java import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class MyNotepad implements ActionListener{ private ...
老边区18716118748: java做记事本 - ?
杨怀瑞科: 我说下大概吧.做一个窗体JFrame.里面设置JMenuBar,然后加入菜单项.分别是JMenu的“文件”和“功能”.文件下挂JMenuItem的打开,保存,另存.功能下挂查找.这样窗体出来了.加入ActionListener监听菜单.然后窗体主体部分加入一个JTextArea.调整合适大小.对于查找试一试从JTextArea中getText的那个string进行indexOf(String str)方法来查找具体位置.打开啥的那些用JFileChooser获得路径字符串,然后通过IO接口与文件关联.保存和另存和这个一样,不过就是OutputStream实现存文件.InputStream实现读入(打开)文件.
老边区18716118748: 用JAVA 编写一个记事本,要有保存和设置字体的功能?
杨怀瑞科: 楼上的无法编译..我整理了一下,代码如下: import java.awt.*; import java.io.*; public class MyClipboard extends Frame implements ActionListener { /** * */ private static final long serialVersionUID = 5541943532647624059L; private TextArea ...