我写了个记事本,现在还有菜单栏中格式中的字体和颜色没有添加
哪位能帮我解决一下,怎样处理要求:用户点击字体或颜色按钮,可以自己选择自己喜欢的字体和颜色
我的代码如下import java.awt.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;import javax.swing.*;public class MyNotePad extends JFrame {

/**
 * 建立一级菜单栏 fileMenu 和二级菜单栏 menuOPen,menuSave,menuSaveAS,menuClose
 */
private JMenu fileMenu; 
private JMenuItem menuOpen;
private JMenuItem menuSave;
private JMenuItem menuSaveAs;
private JMenuItem menuClose;

/**
 * 建立一级菜单栏 formatMenu 和二级菜单栏 menuFont,menuColor
 */
private JMenu  formatMenu;
private JMenuItem menuFont;
private JMenuItem menuColor;
 
/**
 * 建立一级菜单栏 editMenu 和二级菜单栏 menuCut,menuCopy,menuPaste
 */ 
private JMenu editMenu;
private JMenuItem menuCut;
private JMenuItem menuCopy;
private JMenuItem menuPaste;

/**
 * 建立一级菜单栏 menuAbout
 */
private JMenu aboutMenu;
private JMenuItem padAbout;

private JTextArea textArea;   //定义文本域
private JLabel stateBar;   //定义状态栏标签
private JFileChooser fileChooser;      private JPopupMenu popUpMenu;  //定义弹出菜单实现的对象 public MyNotePad() {
super("weiyongzhi --- 记事本");
setUpUIComponent();
setUpEventListener();  
} private void setUpUIComponent() {
setSize(800, 600);
setLocation(200,100); // 菜单栏
JMenuBar menuBar = new JMenuBar(); // 设置「文件」菜单
    fileMenu = new JMenu("文件");
menuOpen = new JMenuItem("打开");
// 快捷键设置
menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
InputEvent.CTRL_MASK));
menuSave = new JMenuItem("保存");
menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
InputEvent.CTRL_MASK));
menuSaveAs = new JMenuItem("另存为"); menuClose = new JMenuItem("关闭");
menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
InputEvent.CTRL_MASK)); fileMenu.add(menuOpen);
fileMenu.addSeparator(); // 分隔线
fileMenu.add(menuSave);
fileMenu.add(menuSaveAs);
fileMenu.addSeparator(); // 分隔线
fileMenu.add(menuClose); // 设置「编辑」菜单
    editMenu = new JMenu("编辑");
menuCut = new JMenuItem("剪切");
menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
InputEvent.CTRL_MASK));    
menuCopy = new JMenuItem("复制");  
menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
InputEvent.CTRL_MASK));
menuPaste = new JMenuItem("粘贴");
menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
InputEvent.CTRL_MASK));
editMenu.add(menuCut);
editMenu.add(menuCopy);
editMenu.add(menuPaste);

//设置[编辑]菜单
    formatMenu = new JMenu("格式");  
menuFont = new JMenuItem("字体");
menuColor = new JMenuItem("颜色");  
formatMenu.add(menuFont);
formatMenu.add(menuColor);
// 设置「关于」菜单
    aboutMenu = new JMenu("关于记事本");
padAbout = new JMenuItem("About");
aboutMenu.add(padAbout); menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(formatMenu);
menuBar.add(aboutMenu); setJMenuBar(menuBar); // 文字编辑区域
textArea = new JTextArea();
textArea.setFont(new Font("宋体", Font.PLAIN, 16));
textArea.setLineWrap(true);  //自动换行
JScrollPane panel = new JScrollPane(textArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); Container contentPane = getContentPane();
contentPane.add(panel, BorderLayout.CENTER); // 状态栏
stateBar = new JLabel("未修改");
stateBar.setHorizontalAlignment(SwingConstants.LEFT);
stateBar.setBorder(BorderFactory.createEtchedBorder());
contentPane.add(stateBar, BorderLayout.SOUTH); popUpMenu = editMenu.getPopupMenu();
fileChooser = new JFileChooser();

setVisible(true);
}

解决方案 »

  1.   

    private void setUpEventListener() {
    // 按下窗口关闭钮事件处理
    addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    closeFile();
    }
    }); // 菜单 - 打开
    menuOpen.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    openFile();
    }
    }); // 菜单 - 保存
    menuSave.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    saveFile();
    }
    }); // 菜单 - 另存为
    menuSaveAs.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    saveFileAs();
    }
    }); // 菜单 - 关闭文件
    menuClose.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    closeFile();
    }
    }); // 菜单 - 剪切
    menuCut.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    cut();
    }
    }); // 菜单 - 复制
    menuCopy.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    copy();
    }
    }); // 菜单 - 粘贴
    menuPaste.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    paste();
    }
    });


    // 菜单 - 关于
    padAbout.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    // 显示对话框
    /* JOptionPane.showOptionDialog(null, "程序名称:  weiyongzhi --- 记事本 \n"
    + "程序设计:  危永治\n" + "简介:\n 一个记事本\n", "关于NotePad",
    JOptionPane.DEFAULT_OPTION,
    JOptionPane.INFORMATION_MESSAGE, null, null, null);
    */
    JOptionPane.showOptionDialog(null, "                        关于我的记事本    \n" + 
    "**************************************************\n" +
    "***            程序简介                               ***********\n" +
    "***     程序名称:   文本编辑器                *******\n" +
    "***     开发工具:  Eclipse5.0                *********\n" +
    "***     开发目的:巩固J2SE中相关知识      *****\n" +
    "***     开发时间: 2008年8月                      *******\n" +
    "***                                                                        *****\n" +
    "*****************************************************\n"+ 
                            "***********************************************************\n" +
                            "***                      个人信息                                               ***\n" +
                            "***      姓名:危永治  QQ:408944024                       **\n" +
                            "*** Blog:http://blog.sina.com.cn/weiyongzhi2005     **\n" +
                            "***      手机:15951561014                                         ***\n" +
                            "***      地址:安徽省巢湖学院计算机系04计本        ***\n" +
                            "***      邮编:238000                                                   ***\n" +
                            "***                                                                                     ***\n" +
                            "********************************************************\n",null,                         
                           JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
                           null, null,null);

    }
    }); // 编辑区键盘事件
    textArea.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
    processTextArea();
    }
    }); // 编辑区鼠标事件
    textArea.addMouseListener(new MouseAdapter() {
    public void mouseReleased(MouseEvent e) {
    if (e.getButton() == MouseEvent.BUTTON3)
    popUpMenu.show(editMenu, e.getX(), e.getY());
    } public void mouseClicked(MouseEvent e) {
    if (e.getButton() == MouseEvent.BUTTON1)
    popUpMenu.setVisible(false);
    }
    });
    } private void openFile() {
    if (isCurrentFileSaved()) { // 文件是否为保存状态
    open(); // 打开
    } else {
    // 显示对话框
    int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?",
    "保存文件?", JOptionPane.YES_NO_OPTION,
    JOptionPane.WARNING_MESSAGE, null);
    switch (option) {
    // 确认文件保存
    case JOptionPane.YES_OPTION:
    saveFile(); // 保存文件
    break;
    // 放弃文件保存
    case JOptionPane.NO_OPTION:
    open();
    break;
    }
    }
    } private boolean isCurrentFileSaved() {
    if (stateBar.getText().equals("未修改")) {
    return true;
    } else {
    return false;
    }
    } private void open() {
    // fileChooser 是 JFileChooser 的实例
    // 显示文件选取的对话框
    int option = fileChooser.showDialog(null, null); // 使用者按下确认键
    if (option == JFileChooser.APPROVE_OPTION) {
    try{
    //打开选取的文件
    BufferedReader buf = new BufferedReader(new FileReader(fileChooser.getSelectedFile()));
    //设置文件标题
    setTitle(fileChooser.getSelectedFile().toString());
    //删除前一次文件
    stateBar.setText("");
    //设置状态栏
    stateBar.setText("未修改");
    //取得系统相依的换行字符
    String lineSeparator = System.getProperty("line.separator");
    //读取文件并附加至文字编辑区
    String text;
    while((text = buf.readLine()) != null){
    textArea.append(text);
    textArea.append(lineSeparator);
    }
    buf.close();
     
    }catch(IOException e){
    JOptionPane.showMessageDialog(null,e.toString(),"开启文件失败",JOptionPane.ERROR_MESSAGE);
    }
    }
    } private void saveFile() {
    // 取得要保存的文件名称
    File file = new File(getTitle());

    // 如果文件不存在
    if(!file.exists()){
    // 执行另存为
    saveFileAs();
    }else{
    try{
    // 打开指定的文件
    BufferedWriter buf = new BufferedWriter(new FileWriter(file));

    // 将编辑区的文件内容写入文件
    buf.write(textArea.getText());
    buf.close();

    // 设置状态栏为未修改
    // stateBar.setText("未修改");
     }catch(IOException e){
     JOptionPane.showMessageDialog(null,e.toString(),"写入文件失败",
     JOptionPane.ERROR_MESSAGE);
     }
      }

    } private void saveFileAs() {
    // 显示文件对话框
    int option = fileChooser.showDialog(null,null);

    // 如果确认选取文件
    if(option == JFileChooser.APPROVE_OPTION){
    // 取 选择的文件
    File file = fileChooser.getSelectedFile();

    // 在标题栏上为该文设置名称
    setTitle(file.toString());

    try{
    // 建立文件
    file.createNewFile();

    // 将文件保存
    saveFile();
    }catch(IOException e){
    JOptionPane.showMessageDialog(null,e.toString(),"建立文件失败",JOptionPane.ERROR_MESSAGE);
    }
    }
    } private void closeFile() {
    // 是否已保存文件
    if (isCurrentFileSaved()) {
    // 释放窗口资源,而后关闭程序
    dispose();
    } else {
    int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?",
    "保存文件?", JOptionPane.YES_NO_OPTION,
    JOptionPane.WARNING_MESSAGE, null); switch (option) {
    case JOptionPane.YES_OPTION:
    saveFile();
    break;
    case JOptionPane.NO_OPTION:
    dispose();
    }
    }
    } private void cut() {
    textArea.cut();
    stateBar.setText("已修改");
    popUpMenu.setVisible(false);
    } private void copy() {
    textArea.copy();
    popUpMenu.setVisible(false);
    } private void paste() {
    textArea.paste();
    stateBar.setText("已修改");
    popUpMenu.setVisible(false);
    } private void processTextArea() {
    stateBar.setText("已修改");
    } public static void main(String[] args) {
    new MyNotePad();
    }
    }
      

  2.   

    这么多代码估计没人看了:(你可以在CSDN得资源里下个记事本得例子看看
      

  3.   

    代码太多了,看不完,你用JTextArea这个类就可以设置字体和颜色,用TextArea的话好像设不了字体
      

  4.   

    做记事本,我的目的是想学会如何才可以像在Word中那样
    点一下格式就会弹出字体颜色,任由自己选择需要的字体和颜色