用内部类实现简单文本编辑器的字体颜色功能
时间: 2024-02-19 13:03:29 浏览: 20
下面是一个简单的文本编辑器示例,使用内部类实现字体颜色功能:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TextEditor extends JFrame {
private JTextArea textArea;
private JMenuBar menuBar;
private JMenu menuFile, menuEdit, menuFormat;
private JMenuItem menuItemNew, menuItemOpen, menuItemSave, menuItemSaveAs, menuItemExit;
private JMenuItem menuItemCut, menuItemCopy, menuItemPaste, menuItemSelectAll;
private JMenuItem menuItemFontColor;
public TextEditor() {
setTitle("Simple Text Editor");
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane);
menuBar = new JMenuBar();
menuFile = new JMenu("File");
menuEdit = new JMenu("Edit");
menuFormat = new JMenu("Format");
menuItemNew = new JMenuItem("New");
menuItemOpen = new JMenuItem("Open");
menuItemSave = new JMenuItem("Save");
menuItemSaveAs = new JMenuItem("Save As");
menuItemExit = new JMenuItem("Exit");
menuItemCut = new JMenuItem("Cut");
menuItemCopy = new JMenuItem("Copy");
menuItemPaste = new JMenuItem("Paste");
menuItemSelectAll = new JMenuItem("Select All");
menuItemFontColor = new JMenuItem("Font Color");
menuFile.add(menuItemNew);
menuFile.add(menuItemOpen);
menuFile.add(menuItemSave);
menuFile.add(menuItemSaveAs);
menuFile.addSeparator();
menuFile.add(menuItemExit);
menuEdit.add(menuItemCut);
menuEdit.add(menuItemCopy);
menuEdit.add(menuItemPaste);
menuEdit.addSeparator();
menuEdit.add(menuItemSelectAll);
menuFormat.add(menuItemFontColor);
menuBar.add(menuFile);
menuBar.add(menuEdit);
menuBar.add(menuFormat);
setJMenuBar(menuBar);
menuItemFontColor.addActionListener(new FontColorActionListener());
setVisible(true);
}
private class FontColorActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Color color = JColorChooser.showDialog(TextEditor.this, "Choose Font Color", Color.BLACK);
textArea.setForeground(color);
}
}
public static void main(String[] args) {
new TextEditor();
}
}
```
在这个示例中,我们创建了一个名为`TextEditor`的类,它继承自`JFrame`。在这个类中,我们定义了一个名为`FontColorActionListener`的内部类,它实现了`ActionListener`接口,用于处理字体颜色菜单项的点击事件。
当用户单击`Font Color`菜单项时,`FontColorActionListener`的`actionPerformed`方法会被调用。在这个方法中,我们使用`JColorChooser`对话框让用户选择字体颜色,并将选定的颜色设置为文本区域的前景色。
注意,在`FontColorActionListener`内部类中,我们使用了`TextEditor.this`来引用外部类的实例,以便在`JColorChooser`对话框中居中显示。