Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3657066
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Java

2022-06-23 17:19:19

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Font;

import java.awt.GraphicsEnvironment;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JColorChooser;

import javax.swing.JComboBox;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JToolBar;

import javax.swing.filechooser.FileNameExtensionFilter;

import chenhao.io.TextTool;

public class TextPad {

private JTextArea contentArea;

private JFrame frame;

private String fileName;

public TextPad() {

frame = new JFrame("记事本");

frame.setSize(500, 500);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

// 添加菜單

JMenuBar menuBar = new JMenuBar();

JMenu menu = new JMenu("文件");

JMenuItem newItem = new JMenuItem("新建");

newAction(newItem);

menu.add(newItem);

JMenuItem openItem = new JMenuItem("打开");

openAction(openItem);

menu.add(openItem);

JMenuItem saveItem = new JMenuItem("保存");

saveAction(saveItem);

menu.add(saveItem);

menuBar.add(menu);

frame.setJMenuBar(menuBar);

// 布局

frame.setLayout(new BorderLayout());

JToolBar toolBar = new JToolBar();

JComboBox fontCom = fontAction();

toolBar.add(fontCom);

JComboBox fontSize = fontSizeAction();

toolBar.add(fontSize);

fontStyleAction(toolBar);

JButton colorbtn = fontColorAction();

toolBar.add(colorbtn);

frame.add(toolBar, BorderLayout.NORTH);

// 文件编辑区

contentArea = new JTextArea();

JScrollPane pane = new JScrollPane(contentArea);

frame.add(pane);

frame.setVisible(true);

}

private JButton fontColorAction() {

JButton colorbtn = new JButton("");

colorbtn.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

Color color = colorbtn.getForeground();

Color co = JColorChooser.showDialog(TextPad.this.frame, "设置字体颜色", color);

                 colorbtn.setForeground(co);

                 contentArea.setForeground(co);

}

});

return colorbtn;

}

// 记事本,字体格式

private void fontStyleAction(JToolBar toolBar) {

JCheckBox boldBox = new JCheckBox("粗体");

JCheckBox itBox = new JCheckBox("斜体");

ActionListener actionListener = new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

boolean bold = boldBox.isSelected();

boolean it = itBox.isSelected();

int style = (bold ? Font.BOLD : Font.PLAIN) | (it ? Font.ITALIC : Font.PLAIN);

Font font = contentArea.getFont();

contentArea.setFont(new Font(font.getName(), style, font.getSize()));

//contentArea.setFont(new Font(font.getName(), style, font.getSize()));

}

};

boldBox.addActionListener(actionListener);

itBox.addActionListener(actionListener);

toolBar.add(boldBox);

toolBar.add(itBox);

}

// 记事本,设置字体大小

private JComboBox fontSizeAction() {

String[] fontSizes = new String[] { "10", "20", "30", "50" };

JComboBox fontSize = new JComboBox<>(fontSizes);

fontSize.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

int size = Integer.valueOf((String) fontSize.getSelectedItem());

Font font = TextPad.this.contentArea.getFont();

TextPad.this.contentArea.setFont(new Font(font.getName(), font.getStyle(), size));

}

});

return fontSize;

}

// 记事本,设置字体

private JComboBox fontAction() {

GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fontNames = environment.getAvailableFontFamilyNames();

JComboBox fontCom = new JComboBox<>(fontNames);

fontCom.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String fontName = (String) fontCom.getSelectedItem();

Font font = TextPad.this.contentArea.getFont();

TextPad.this.contentArea.setFont(new Font(fontName, font.getStyle(), font.getSize()));

}

});

return fontCom;

}

// 记事本新建操作

private void newAction(JMenuItem newItem) {

newItem.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

contentArea.setText("");

frame.setTitle("新建-记事本");

fileName = null;

}

});

}

// 记事本打开文件操作

private void openAction(JMenuItem openItem) {

openItem.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

JFileChooser chooser = new JFileChooser();

FileNameExtensionFilter filter = new FileNameExtensionFilter("Text & dat", "txt", "dat");

chooser.setFileFilter(filter);

int returnVal =跟单网gendan5.com chooser.showOpenDialog(frame);

if (returnVal == JFileChooser.APPROVE_OPTION) {

String fileName = chooser.getSelectedFile().getPath();

TextPad.this.fileName = fileName;

String content = TextTool.read(fileName);

contentArea.setText(content);

TextPad.this.frame.setTitle(fileName + "- 记事本");

}

}

});

}

// 菜单 保存操作

private void saveAction(JMenuItem saveItem) {

saveItem.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

if (TextPad.this.fileName != null) {

String content = TextPad.this.contentArea.getText();

TextTool.write(TextPad.this.fileName, content);

} else {

JFileChooser chooser = new JFileChooser();

FileNameExtensionFilter filter = new FileNameExtensionFilter("Text & dat", "txt", "dat");

chooser.setFileFilter(filter);

int returnVal = chooser.showSaveDialog(frame);

if (returnVal == JFileChooser.APPROVE_OPTION) {

String fileName = chooser.getSelectedFile().getPath();

TextPad.this.fileName = fileName;

String content = TextPad.this.contentArea.getText();

TextTool.write(TextPad.this.fileName, content);

TextPad.this.frame.setTitle(fileName + "- 记事本");

}

}

}

});

}

public static void main(String[] args) {

TextPad pad = new TextPad();

}

}

阅读(1591) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~