Java4、 根据下面的要求编写程序(35分): ① 创建一个标题为“第4题”的窗口,大小为600×400; ③ 在窗口中间放置一个20行20列的文本区,带滚动条; ④ 设置字体为“楷体_gb2312”加粗,字号20; ⑤ 为窗口设置菜单条,菜单条上有一个菜单【File】; ⑥ 【File】菜单下,添加4个菜单项:“New”、“Get7Num”“Save”和“Exit”,并设置快捷键分别为:“Ctrl+N”、“Ctrl+G”、“Ctrl+S”、“Ctrl+E”; ⑦ 选择菜单项“New”,则清除文本区内容; ⑧ 选择菜单项“Get7Num”,则随即生成7个范围在[1 , 36]的整数,并把这7个数字显示在文本区的一行上; ⑨ 选择菜单项“Save”,则弹出保存文件对话框,将文本区的内容保存为文本文件; ⑩ 选择菜单项“Exit”,则关闭窗口,退出程序的运行。
时间: 2023-10-03 17:03:59 浏览: 67
好的,下面是根据要求编写的Java程序,包含了窗口、文本区、菜单条和菜单项的创建及相应的事件处理:
```java
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.Random;
public class MyWindow extends Frame {
private TextArea textArea;
public MyWindow() {
super("第4题");
// 创建文本区
textArea = new TextArea(20, 20);
textArea.setFont(new Font("楷体_gb2312", Font.BOLD, 20));
// 创建滚动条
ScrollPane scrollPane = new ScrollPane();
scrollPane.add(textArea);
// 将文本区添加到滚动条中
scrollPane.add(textArea);
// 将滚动条添加到窗口中间的位置
add(scrollPane, BorderLayout.CENTER);
// 创建菜单条
MenuBar menuBar = new MenuBar();
// 创建菜单
Menu fileMenu = new Menu("File");
// 创建菜单项
MenuItem newMenuItem = new MenuItem("New");
newMenuItem.setShortcut(new MenuShortcut(KeyEvent.VK_N, false));
newMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
textArea.setText("");
}
});
MenuItem get7NumMenuItem = new MenuItem("Get7Num");
get7NumMenuItem.setShortcut(new MenuShortcut(KeyEvent.VK_G, false));
get7NumMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Random rand = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 7; i++) {
sb.append(rand.nextInt(36) + 1);
sb.append(" ");
}
textArea.append(sb.toString() + "\n");
}
});
MenuItem saveMenuItem = new MenuItem("Save");
saveMenuItem.setShortcut(new MenuShortcut(KeyEvent.VK_S, false));
saveMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FileDialog fileDialog = new FileDialog(MyWindow.this, "Save", FileDialog.SAVE);
fileDialog.setVisible(true);
if (fileDialog.getFile() != null) {
try {
FileWriter fileWriter = new FileWriter(fileDialog.getDirectory() + fileDialog.getFile());
fileWriter.write(textArea.getText());
fileWriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
});
MenuItem exitMenuItem = new MenuItem("Exit");
exitMenuItem.setShortcut(new MenuShortcut(KeyEvent.VK_E, false));
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
System.exit(0);
}
});
// 将菜单项添加到菜单中
fileMenu.add(newMenuItem);
fileMenu.add(get7NumMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.add(exitMenuItem);
// 将菜单添加到菜单条中
menuBar.add(fileMenu);
// 将菜单条添加到窗口中
setMenuBar(menuBar);
// 设置窗口大小并显示
setSize(600, 400);
setVisible(true);
}
public static void main(String[] args) {
new MyWindow();
}
}
```
这个程序实现了要求中的所有功能,菜单项的事件处理使用了匿名内部类的方式,比较简洁。
阅读全文