我写了个记事本,现在还有菜单栏中格式中的字体和颜色没有添加
哪位能帮我解决一下,怎样处理要求:用户点击字体或颜色按钮,可以自己选择自己喜欢的字体和颜色
我的代码如下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);
}
哪位能帮我解决一下,怎样处理要求:用户点击字体或颜色按钮,可以自己选择自己喜欢的字体和颜色
我的代码如下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);
}
// 按下窗口关闭钮事件处理
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();
}
}
点一下格式就会弹出字体颜色,任由自己选择需要的字体和颜色