这个代码是我参考了其他众多文章,总结精简出来的规范代码,能注释的代码我都给注释了,直接拷贝后导入相关包即可使用。感谢大家的一键三连!
package 实习;
import com.sun.corba.se.impl.protocol.JIDLLocalCRDImpl;
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.Calendar;
//以上都是一些需要用到的库类
public class 下拉式菜单 {
public static void main(String[] args) {
SwingUtilities.invokeLater(下拉式菜单::creatGUI);
}
public static void creatGUI() {
//创建可视化窗口
JFrame f = new JFrame("###的小本本");
//设定显示位置,左上角为(0,0),根据笔记本电脑的显示分辨率设置成在正中间显示
f.setLocation(480, 270);//这是显示窗口的左上角坐标
//设定窗口大小为屏幕1/2倍(电脑显示分辨率)
f.setSize(960, 540);//我电脑显示分辨率为1920*1080
//创建文本域用来打字显示出来的
JTextArea WBY = new JTextArea("Hello");//这里可以输入东西到时候打开窗体自动显示出来
WBY.setFont(new Font("", Font.BOLD, 25));
//设置文本域为自动换行
WBY.setLineWrap(true);
//将文本域添加到含有下拉框的面板中
JScrollPane MB = new JScrollPane(WBY);
//将含有下拉框的面板放入内容面板中
f.add(MB);
//创建一个菜单栏
JMenuBar cdl = new JMenuBar();
//创建菜单栏上的5个菜单并且设置字体和大小
JMenu m1 = new JMenu("文件");
JMenu m2 = new JMenu("编辑");
JMenu m3 = new JMenu("字体大小");
JMenu m4 = new JMenu("字体颜色");
JMenu m5 = new JMenu("帮助文档");
m1.setFont(new Font("", Font.BOLD, 25));
m2.setFont(new Font("", Font.BOLD, 25));
m3.setFont(new Font("", Font.BOLD, 25));
m4.setFont(new Font("", Font.BOLD, 25));
m5.setFont(new Font("", Font.BOLD, 25));
//在菜单的基础上创建下拉可选菜单项按钮
JMenuItem x1 = new JMenuItem("新建");
JMenuItem x2 = new JMenuItem("保存");
JMenuItem x3 = new JMenuItem("打开");
JMenuItem x4 = new JMenuItem("退出");
JMenuItem x5 = new JMenuItem("复制");
JMenuItem x6 = new JMenuItem("粘贴");
JMenuItem x7 = new JMenuItem("裁剪");
JMenuItem x8 = new JMenuItem("删除");
JMenuItem x9 = new JMenuItem("大");
JMenuItem x10 = new JMenuItem("中");
JMenuItem x11 = new JMenuItem("小");
JMenuItem x12 = new JMenuItem("红色");
JMenuItem x13 = new JMenuItem("绿色");
JMenuItem x14 = new JMenuItem("蓝色");
JMenuItem x15 = new JMenuItem("黑色");
JMenuItem x16 = new JMenuItem("百度");
//为下拉可选菜单项设置字体和大小
x1.setFont(new Font("s", Font.BOLD, 20));
x2.setFont(new Font("s", Font.BOLD, 20));
x3.setFont(new Font("s", Font.BOLD, 20));
x4.setFont(new Font("s", Font.BOLD, 20));
x5.setFont(new Font("s", Font.BOLD, 20));
x6.setFont(new Font("s", Font.BOLD, 20));
x7.setFont(new Font("s", Font.BOLD, 20));
x8.setFont(new Font("s", Font.BOLD, 20));
x9.setFont(new Font("s", Font.BOLD, 40));
x10.setFont(new Font("s", Font.BOLD, 30));
x11.setFont(new Font("s", Font.BOLD, 20));
x12.setFont(new Font("s", Font.BOLD, 20));
x13.setFont(new Font("s", Font.BOLD, 20));
x14.setFont(new Font("s", Font.BOLD, 20));
x15.setFont(new Font("s", Font.BOLD, 20));
x16.setFont(new Font("s", Font.BOLD, 20));
//给颜色下拉菜单项分别设置相应的背景色,这样展现就会直观一点了
x12.setBackground(Color.RED);
x13.setBackground(Color.GREEN);
x14.setBackground(Color.BLUE);
x15.setBackground(Color.BLACK);
//实现新建记事本按钮的功能
x1.addActionListener(e -> {
creatGUI();
});//再次调用该方法创建另外一个记事本
//实现保存记事本按钮的功能
x2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e2) {
//创建一个窗体并且设置窗体标题和保存功能
FileDialog fileDialog = new FileDialog(f, "保存文件至", FileDialog.SAVE);
//保存文件的对话框设置为可见
fileDialog.setVisible(true);
//获取保存的路径和设置的文件名
String absPath = fileDialog.getDirectory() + fileDialog.getFile();
try {//用来检测是否设置了保存路径
//设置输出文件名为保存的路径下面的文件名
BufferedWriter wr = new BufferedWriter(new FileWriter(absPath));
//获取文本域字符串
String s = WBY.getText();
//开始写入
wr.write(s);
//写完关闭
wr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
//实现打开记事本按钮的功能
x3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e2) {
//创建一个窗体并且设置窗体标题和打开功能
FileDialog fileDialog = new FileDialog(f, "打开文件", FileDialog.LOAD);
//打开文件的对话框设置为可见
fileDialog.setVisible(true);
//获取打开的路径和设置的文件名
String absPath = fileDialog.getDirectory() + fileDialog.getFile();
try {//用来检测是否设置了打开路径
//设置读入文件名为打开的路径下面的文件名
BufferedReader re = new BufferedReader(new FileReader(absPath));
String line;
while ((line = re.readLine()) != null)
//只要文件中不为空就不断追加到文本框中
WBY.append(line + '\n');
//读取完毕结束
re.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
//实现退出记事本按钮的功能
x4.addActionListener(e -> System.exit(0));
//调用文件工具箱下的系统剪贴板方法
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
//实现复制文本按钮的功能
x5.addActionListener(e -> {
//将选中的文本内容存入text中
String text = WBY.getSelectedText();
//传送到字符串里面存着
StringSelection selection = new StringSelection(text);
//将得到的内容放入到剪切板中
clipboard.setContents(selection, null);
});
//实现粘贴文本按钮的功能
x6.addActionListener(e -> {
//获取系统剪贴板中的内容
Transferable text = clipboard.getContents(null);
//判断剪贴板中的内容是否支持文本
if (text.isDataFlavorSupported(DataFlavor.stringFlavor)) {
try {
//强制转换剪贴板中的内容
String text1 = (String) text.getTransferData(DataFlavor.stringFlavor);
//获取当前光标的位置
int n=WBY.getCaretPosition();
//插入复制的内容到文本框的光标后面
WBY.insert(text1,n);
} catch (Exception e2) {
e2.printStackTrace();
}
}
});
//实现裁剪文本按钮的功能
x7.addActionListener(e -> {
//将得到的选择文本内容存入text中
String text = WBY.getSelectedText();
//传送到字符串里面存着
StringSelection selection = new StringSelection(text);
//将得到的内容放到剪切板中
clipboard.setContents(selection, null);
//将选中文本start到end之间的内容替换为空白""
WBY.replaceRange("", WBY.getSelectionStart(), WBY.getSelectionEnd());
});
//实现删除文本按钮的功能
x8.addActionListener(e -> {
//将选中文本start到end之间的内容替换为空白
WBY.replaceRange("", WBY.getSelectionStart(), WBY.getSelectionEnd());
});
//实现字体变大的功能
x9.addActionListener(e -> {
WBY.setFont(new Font("", Font.BOLD, 40));
});
//实现字体变中等大小的功能
x10.addActionListener(e -> {
WBY.setFont(new Font("", Font.BOLD, 30));
});
//实现字体变小的功能
x11.addActionListener(e -> {
WBY.setFont(new Font("", Font.BOLD, 20));
});
//实现字体颜色变红的功能
x12.addActionListener(e -> {
WBY.setForeground(Color.RED);
});
//实现字体颜色变绿的功能
x13.addActionListener(e -> {
WBY.setForeground(Color.GREEN);
});
//实现字体颜色变蓝的功能
x14.addActionListener(e -> {
WBY.setForeground(Color.BLUE);
});
//实现字体颜色变黑的功能
x15.addActionListener(e -> {
WBY.setForeground(Color.BLACK);
});
//实现打开帮助文档的功能
x16.addActionListener(e -> {
//创建消息提示框,包括显示内容和弹窗标题
JOptionPane.showMessageDialog(f,
"百度!", "提示", JOptionPane.INFORMATION_MESSAGE);
});
//分别给5个菜单添加各自的下拉菜单项
m1.add(x1);
m1.addSeparator();//两个菜单项之间添加界线
m1.add(x2);
m1.addSeparator();//两个菜单项之间添加界线
m1.add(x3);
m1.addSeparator();//两个菜单项之间添加界线
m1.add(x4);
m2.add(x5);
m2.addSeparator();//两个菜单项之间添加界线
m2.add(x6);
m2.addSeparator();//两个菜单项之间添加界线
m2.add(x7);
m2.addSeparator();//两个菜单项之间添加界线
m2.add(x8);
m3.add(x9);
m3.addSeparator();//两个菜单项之间添加界线
m3.add(x10);
m3.addSeparator();//两个菜单项之间添加界线
m3.add(x11);
m4.add(x12);
m4.addSeparator();//两个菜单项之间添加界线
m4.add(x13);
m4.addSeparator();//两个菜单项之间添加界线
m4.add(x14);
m4.addSeparator();//两个菜单项之间添加界线
m4.add(x15);
m5.add(x16);
//添加这5个菜单到菜单栏
cdl.add(m1);
cdl.add(m2);
cdl.add(m3);
cdl.add(m4);
cdl.add(m5);
//给窗体添加完善好的菜单栏
f.setJMenuBar(cdl);
//记事本设置为可见
f.setVisible(true);
//点击×号结束应用程序
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
}