怎么样用java编写记事本(只能用awt,不能有swing)

java中awt和swing是什么关系啊,有点学闷了,请用简单的语言解释一下~

AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的关系,我们把它称为peers。 也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形库。由于不同操作系统的图形库所提供的功能是不一样的,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的"一次编译,到处运行"的概念,AWT 不得不通过牺牲功能来实现其平台无关性,也就是说,AWT 所提供的图形功能是各种通用型操作系统所提供的图形功能的交集。由于AWT 是依靠本地方法来实现其功能的,我们通常把AWT控件称为重量级控件。

Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充。例如说并不是所有的操作系统都提供了对树形控件的支持, Swing 利用了AWT 中所提供的基本作图方法对树形控件进行模拟。由于 Swing 控件是用100%的Java代码来实现的,因此在一个平台上设计的树形控件可以在其他平台上使用。由于在Swing 中没有使用本地方法来实现图形功能,我们通常把Swing控件称为轻量级控件。

AWT和Swing之间的基本区别:AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。对于一个嵌入式应用来说,目标平台的硬件资源往往非常有限,而应用程序的运行速度又是项目中至关重要的因素。在这种矛盾的情况下,简单而高效的AWT 当然成了嵌入式Java的第一选择。而在普通的基于PC或者是工作站的标准Java应用中,硬件资源对应用程序所造成的限制往往不是项目中的关键因素,所以在标准版的Java中则提倡使用Swing, 也就是通过牺牲速度来实现应用程序的功能。



通俗的话:

AWT 是抽象窗口组件工具包,是 java 最早的用于编写图形节目应用程序的开发包。
Swing 是为了解决 AWT 存在的问题而新开发的包,它以 AWT 为基础的。

我就是没有用过awt,直接用swing开始,还用swing做了几个桌面系统!
不过个人认为那个IBM开发的SWT效果更好看,现在我就是用SWT,它们两个在调用的时候是有些不一样。
不过,看你应该是还没有入门,那就不要问太多问题了,说多了又听不懂浪费时间。拿着swing直接学着做个系统,或者用SWT都可以,以后自然就明白了,动手才是硬道理。
建议借本书,参照java API(用户手册),抓紧时间练习!

具体参考此文
http://www.qqpop.com/bbs/printthread.php?t=2628

/*
* Created on 2005-3-22
*
* JAVA课程大作业1:编写一个记事本,可以实现记事本的简单功能.
* Window - Preferences - Java - Code Style - Code Templates
*/
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class MyActions {

static final long serialVersionUID = 3228193999994336070L;
// 打开文件
String fileOpen() {

// 设置普通参数
BufferedReader in = null; // 设置读缓冲
JFrame dialogFrame = new JFrame(); // 弹出窗口
String filePath; // 文件路径
StringBuffer sbTemp = new StringBuffer(""); // 文件缓冲
String sTemp = null; // 行缓冲

// 设置打开文件的扩展名 开始
JFileChooser c = new JFileChooser();
ExampleFileFilter filter = new ExampleFileFilter();
filter.addExtension("txt");
filter.setDescription("文本文件");
c.setFileFilter(filter);
// 设置打开文件的扩展名 结束
int rVal = c.showOpenDialog(dialogFrame);
if(rVal == JFileChooser.APPROVE_OPTION) {
filePath = c.getSelectedFile().getPath();
try{
in = new BufferedReader(new FileReader(filePath));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}

try {
while((sTemp = in.readLine()) != null ) {
sbTemp.append(sTemp + "\n");
}
} catch (IOException e2) {
e2.printStackTrace();
}
try {
in.close();
} catch (IOException e3) {
e3.printStackTrace();
}
}
return (sbTemp.toString());
}
// 保存文件
void fileSave() {
fileSaveAs();
}

String fileSaveAs() {
// 设置普通参数
JFrame dialogFrame = new JFrame(); // 弹出窗口
StringBuffer filePath = new StringBuffer(""); // 文件路径

// 设置保存文件的扩展名 开始
JFileChooser c = new JFileChooser();
ExampleFileFilter filter = new ExampleFileFilter();
filter.addExtension("txt");
filter.setDescription("文本文件");
c.setFileFilter(filter);
// 设置保存文件的扩展名 结束
int rVal = c.showSaveDialog(dialogFrame);
if(rVal == JFileChooser.APPROVE_OPTION) {
filePath.append(c.getSelectedFile().getPath());
}

/*
* 判断:
* 如果保存文件的时候没有指示文件扩展名,则自动指示为.txt。
* 如果保存文件的时候已经指示了文件扩展,则以指定方式保存。
*/
if ((filePath.lastIndexOf(".")) == -1) {
filePath.append(".txt");
return(filePath.toString());
}
else
return (filePath.toString());
}

int fileNotSaveMessage(){
int i;
i = JOptionPane.showConfirmDialog(null,
"文件已经更改,想保存文件吗?", "记事本", JOptionPane.YES_NO_OPTION);
return i;
}
}

/*
* Created on 2005-3-22
*
* JAVA课程大作业1:编写一个记事本,可以实现记事本的简单功能.
* Window - Preferences - Java - Code Style - Code Templates
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
class UserInterface extends JFrame{
static final long serialVersionUID = -4974434346775996938L;
// 设置界面
JFrame frame = new JFrame("记事本");

// 设置菜单项目
JMenuItem
menuFileNew, menuFileOpen, menuFileSave, menuFileSaveAs,
menuFilePrint, menuFilePrintSetup, menuFileExit,
menuEditCut, menuEditCopy, menuEditPaste, menuSelectAll,
menuEditDeleteSelection, menuEditFind, menuEditReplace,
menuEditGoTo, menuHelpAbout;

//设置可选择菜单
JCheckBoxMenuItem menuViewWordWrap;

// 设置菜单分类
JMenu menuFile, menuEdit, menuView, menuHelp;

// 设置右键菜单项目
JMenuItem
RCMenuCut, RCMenuCopy, RCMenuPaste, RCMenuSelectAll;

// 设置菜单条
JMenuBar mb = new JMenuBar();
JPopupMenu popup = new JPopupMenu();

// 设置文本编辑区
JScrollPane scrollPane;
JTextArea textArea;

// 设置监听器
MyListener ML = new MyListener();
PopupListener PL = new PopupListener();

// 设置其它系统参数
boolean isFileSave = false;
boolean isFileNew = true;
int receiveReturnPara;

private void setMenu() {
// ---------- 设置菜单分类 ----------
menuFile = new JMenu("文件(F) ", true);
menuFile.setMnemonic(KeyEvent.VK_F);

menuEdit = new JMenu("编辑(E)", true);
menuEdit.setMnemonic(KeyEvent.VK_E);

menuView = new JMenu("察看(V)", true);
menuView.setMnemonic(KeyEvent.VK_V);

menuHelp = new JMenu("帮助(H)", true);
menuHelp.setMnemonic(KeyEvent.VK_H);
// ---------- 菜单分类结束 ----------

// 文件 新建菜单
menuFileNew = new JMenuItem("新建", 'N');
menuFileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
InputEvent.CTRL_MASK));
menuFileNew.addActionListener(ML);
// 文件 打开菜单
menuFileOpen = new JMenuItem("打开(O)", 'O');
menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
menuFileOpen.addActionListener(ML);

// 文件 保存菜单
menuFileSave = new JMenuItem("保存(S)", 'S');
menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
menuFileSave.addActionListener(ML);

// 文件 另存为菜单
menuFileSaveAs = new JMenuItem("另存为(A)... ", 'A');
menuFileSaveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F12, 0));
menuFileSaveAs.addActionListener(ML);

// 文件 关闭菜单
menuFileExit = new JMenuItem("关闭(X)", 'X');
menuFileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,
InputEvent.ALT_MASK));
menuFileExit.addActionListener(ML);

// 编辑 剪切菜单
menuEditCut = new JMenuItem("剪切(T) ", 'T');
menuEditCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));
menuEditCut.addActionListener(ML);

// 编辑 复制菜单
menuEditCopy = new JMenuItem("复制(C) ", 'C');
menuEditCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
menuEditCopy.addActionListener(ML);

// 编辑 粘贴菜单
menuEditPaste = new JMenuItem("粘贴(P) ", 'P');
menuEditPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
menuEditPaste.addActionListener(ML);

// 编辑 全选菜单
menuSelectAll = new JMenuItem("全选(A) ", 'A');
menuSelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
InputEvent.CTRL_MASK));
menuSelectAll.addActionListener(ML);

// 编辑 删除菜单
menuEditDeleteSelection = new JMenuItem("删除(S) ", 'S');
menuEditDeleteSelection.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
menuEditDeleteSelection.addActionListener(ML);

// 编辑 转到菜单 未完成
/* menuEditGoTo = new JMenuItem("转到(A) ", 'A');
menuEditGoTo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,
InputEvent.CTRL_MASK));
menuEditGoTo.addActionListener(ML);
*/

// 视图 自动换行
menuViewWordWrap = new JCheckBoxMenuItem("自动换行 ");
menuViewWordWrap.setMnemonic('W');
menuViewWordWrap.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
InputEvent.CTRL_MASK));
menuViewWordWrap.setState(false);
menuViewWordWrap.addActionListener(ML);

// 帮助 关于
menuHelpAbout = new JMenuItem("关于(A)... ", 'A');
menuHelpAbout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
menuHelpAbout.addActionListener(ML);
}

private void setRightClickMenu() {
// 设置右键菜单
RCMenuCut = new JMenuItem("剪切(T) ", 'T');
RCMenuCut.addActionListener(ML);

RCMenuCopy = new JMenuItem("复制(C) ", 'C');
RCMenuCopy.addActionListener(ML);

RCMenuPaste = new JMenuItem("粘贴(P) ", 'P');
RCMenuPaste.addActionListener(ML);

RCMenuSelectAll = new JMenuItem("全选(S) ", 'S');
RCMenuSelectAll.addActionListener(ML);
}
private void setUI() {
frame.getContentPane().setLayout(new BorderLayout());
frame.setJMenuBar(mb);
JPanel p = new JPanel();

// 为文件菜单添加项目
mb.add(menuFile);
menuFile.add(menuFileNew);
menuFile.add(menuFileOpen);
menuFile.add(menuFileSave);
menuFile.add(menuFileSaveAs);
menuFile.addSeparator(); // 分割线
menuFile.add(menuFileExit);

// 为编辑菜单添加项目
mb.add(menuEdit);
menuEdit.add(menuEditCut);
menuEdit.add(menuEditCopy);
menuEdit.add(menuEditPaste);
menuEdit.add(menuSelectAll);
menuEdit.addSeparator();
menuEdit.add(menuEditDeleteSelection);
// menuEdit.add(menuEditGoTo);

// 为察看菜单添加项目
mb.add(menuView);
menuView.add(menuViewWordWrap);

// 为帮助菜单添加项目
mb.add(menuHelp);
menuHelp.add(menuHelpAbout);

// 添加右键菜单
popup.add(RCMenuCut);
popup.add(RCMenuCopy);
popup.add(RCMenuPaste);
popup.add(RCMenuSelectAll);
// 添加滚动区域
scrollPane = new JScrollPane();
JViewport port = scrollPane.getViewport();
textArea = new JTextArea();
textArea.setFont(new Font("Fixedsys", Font.PLAIN, 14));
port.add(textArea);

// 添加组件
frame.add("Center", scrollPane);

// 添加右键菜单响应
textArea.addMouseListener(PL);

// 添加窗口事件
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
if(!isFileSave) {
MyActions MA =new MyActions();
receiveReturnPara = MA.fileNotSaveMessage();
String s = new String("");
if (receiveReturnPara == 0){
// 如果选择“是”,则调用保存文件方法,然后再关闭。
try {
PrintWriter out = new PrintWriter(new BufferedWriter(
new FileWriter((s =MA.fileSaveAs()))));
out.print(textArea.getText());
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
isFileSave = true;
System.exit(0);
} else if (receiveReturnPara == 1) {
// 如果选择“否”,则直接关闭,并告知文件尚未保存。
System.exit(0);
}
} else
System.exit(0);
}
});

// 设置窗口使可见
frame.setSize(800,600);
frame.setVisible(true);

}
void startApp() {
try {
// 把界面设置成windows界面
UIManager
.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
}
setMenu();
setRightClickMenu();
setUI();
}

class PopupListener extends MouseAdapter {
public void mousePressed(MouseEvent e) {
maybeShowPopup(e);
}
public void mouseReleased(MouseEvent e) {
maybeShowPopup(e);
}
private void maybeShowPopup(MouseEvent e) {
if(e.isPopupTrigger())
popup.show(((JTextArea)e.getComponent()), e.getX(), e.getY());
}
}

class MyListener implements ActionListener {
MyActions MA = new MyActions();
void saveFile() {
try {
PrintWriter out = new PrintWriter(new BufferedWriter(
new FileWriter(MA.fileSaveAs())));
out.print(textArea.getText());
out.close();
} catch (IOException e1) {
e1.printStackTrace();
}
isFileSave = true;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == menuFileNew) {
// 如果没有保存,则在新建文件时候询问
if(!isFileSave) {
receiveReturnPara = MA.fileNotSaveMessage();
if (receiveReturnPara == 0){
// 如果选择“是”,则调用保存的方法,新建文件,并且告知文件是尚未保存的。
textArea.setText("");
isFileSave = false;
} else {
// 如果选择“否”,则直接新建文件,并告知文件尚未保存。
textArea.setText("");
isFileSave = false;
}
} else
textArea.setText("");
}
else if (e.getSource() == menuFileOpen) {
// 如果没有保存,则在新建文件时候询问
if(!isFileSave) {
receiveReturnPara = MA.fileNotSaveMessage();
if (receiveReturnPara == 0){
// 如果选择“是”,则调用保存文件方法,然后再调用打开文件方法。
// 并且告知新开文件是尚未保存的。

textArea.setText("");
textArea.setText(MA.fileOpen());
isFileSave = false;
} else {
// 如果选择“否”,则直接打开文件,并告知文件尚未保存。
textArea.setText("");
textArea.setText(MA.fileOpen());
isFileSave = false;
}
} else {
textArea.setText("");
textArea.setText(MA.fileOpen());
}

}
else if (e.getSource() == menuFileSave) {
saveFile();
}
else if (e.getSource() == menuFileSaveAs) {
saveFile();
}
else if (e.getSource() == menuFileExit) {
if(!isFileSave) {
receiveReturnPara = MA.fileNotSaveMessage();
if (receiveReturnPara == 0){
// 如果选择“是”,则调用保存文件方法,然后再关闭。
saveFile();
System.exit(1);
} else {
// 如果选择“否”,则直接关闭,并告知文件尚未保存。
System.exit(1);
}
} else
System.exit(1);
}
else if ((e.getSource() == menuEditCut) || (e.getSource() == RCMenuCut)) {
textArea.cut();
}
else if ((e.getSource() == menuEditCopy) || (e.getSource() == RCMenuCopy)){
textArea.copy();
}
else if ((e.getSource() == menuEditPaste) || (e.getSource() == RCMenuPaste)) {
textArea.paste();
}
else if ((e.getSource() == menuSelectAll) || (e.getSource() == RCMenuSelectAll)) {
textArea.selectAll();
}
else if(e.getSource() == menuViewWordWrap) {
if (menuViewWordWrap.getState()) {
textArea.setLineWrap(true);
} else {
textArea.setLineWrap(false);
}
}
else if(e.getSource() == menuHelpAbout) {
JOptionPane.showConfirmDialog(null,
"==== 简易记事本 ====\n\nLittlelong\n北京交通大学\n计算机与信息技术学院\n计科0308班\n\nwww.qqpop.com",
"关于",JOptionPane.CLOSED_OPTION);
}
}
}
}
public class Notepad {
public static void main(String[] args) {
UserInterface Notepad = new UserInterface();
Notepad.startApp();
}
}

刚好手头有一个。不如发消息告知邮件。给你发过去

用JAVA编写一个记事本~只要实现以下功能:插入~删除~查找~保存~另存为...
答:import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReade...

如何用java一步步编出一个记事本程序
答:一、要创建一个Frame或者JFrame现在基本上都用后者二、要建立你的控件,就是面板Jpanel菜单JMenu\JMenuItem等,写字板textArea等,三、动作监听器,addActionListener四、就是你的布局了一下是一个可以运行的,你看看package mySwing;import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java....

用JAVA 编写一个记事本,要有保存和设置字体的功能
答:回答:没。。。JAVA本身 有这种的软件 国产的么?

如何用JAVA程序编写一个记事本
答:String message = "---\n版本:1.0\n作者:时超" + "\n撤销功能要用堆栈存贮操作" + "\n还有字体格式"+ "\n暂时没有实现" + "\n\n感谢您的使用"; JOptionPane.showMessageDialog(th, message, "关于", JOptionPane.PLAIN_MESSAGE); } else if (source == timeDate) { Date nowTime = new Date()...

【紧急求助】求简单JAVA记事本程序
答:【紧急求助】求简单JAVA记事本程序 要求:1.实现基本的文本编辑功能:新建、打开和保存文件、复制和粘贴文本。2.改变文本字体大小,背景颜色。3、应该能够判断文本区中的文本是否被修改了,如果是,则应该在新建一个文... 要求:1.实现基本的文本编辑功能:新建、打开和保存文件、复制和粘贴文本。 2.改变文本字体大小,...

用JAVA编个简单的记事本程序
答:ta1=new TextArea("至于记事本的主题嘛,因为本人的水平有限, 所有不能为大家作过多的指导,望大家见谅!"); //在这里我想加一个文本框用来放帮助信息。ce1=new Choice();ce2=new Choice(); ce3=new Choice(); btn1=new Button("确定");btn2=new Button("取消");btn1.addActionListener(this);btn2...

用java编写记事本(输入,打开,保存功能就行)或者计算器(实现加减乘除就...
答:import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListener { private JTextField text;StringBuffer sb1 = new StringBuffer(); //参数一 StringBuffer sb2 = new StringBuffer(); //参数二 private double b;private double...

java的一个简单记事本程序设计
答:java的字体Font类、GraphicsEnvironment类编程问题:利用Font类、画图环境类,把系统字体全部抽出来,包括颜色、字体。意思即是:设计一个java程序,通过按钮“字体”、“颜色”设置,可以把里面的文本格式改变,相当一个“记事本”吧!注意:不用功能太强大,满足满足设置字体、颜色即可!Ps:不明白的问我啦!希望高手能完成,多谢...

怎么样用java编写记事本(只能用awt,不能有swing)
答:* JAVA课程大作业1:编写一个记事本,可以实现记事本的简单功能. * Window - Preferences - Java - Code Style - Code Templates */ import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import javax.swing.JFileChooser; import javax....

谁帮我用JAVA写一个记事本?
答:/* AWT Sample application "记事本应用程序java源代码" * @author Amiry * @version 1.00 07/05/25 */ import java.awt.*; //导入抽象窗口工具集包(abstract window toolkit) import java.awt.event.*; //导入窗口事件工具包 import java.io.*; //导入输入输出工具包 import java.awt.datatransfer.*;...

IT评价网,数码产品家用电器电子设备等点评来自于网友使用感受交流,不对其内容作任何保证

联系反馈
Copyright© IT评价网