编写一个应用程序,有一个Frame窗口,窗口的中心添加了一个文本区。该窗口中有有4个菜单。每个菜单里都有菜单项,每个菜单项都对应有快捷键,选择某个菜单项时窗口中心的文本区显示某些信息。
时间: 2024-12-17 22:17:49 浏览: 3
在Java Swing中,你可以按照以下步骤编写这样的应用程序:
1. 导入必要的库:
```java
import javax.swing.*;
import java.awt.*;
```
2. 创建`JFrame`窗口:
```java
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("文本区示例");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null); // 将窗口居中
}
}
```
3. 添加`JTextArea`作为中心文本区:
```java
private JTextArea textArea = new JTextArea();
textArea.setEditable(false); // 设置不可编辑
frame.add(new JScrollPane(textArea), BorderLayout.CENTER);
```
4. 创建`JMenuBar`和菜单项:
```java
JMenuBar menuBar = new JMenuBar();
JMenu menu1 = new JMenu("菜单1");
JMenuItem menuItem1 = new JMenuItem("菜单项1", KeyEvent.VK_1);
menuItem1.addActionListener(e -> displayInfo("这是菜单1的信息"));
menu1.add(menuItem1);
// 创建其他三个菜单...
JMenu menu2 = new JMenu("菜单2");
JMenuItem menuItem2 = new JMenuItem("菜单项2", KeyEvent.VK_2);
menuItem2.addActionListener(e -> displayInfo("这是菜单2的信息"));
// ... 并将它们添加到菜单栏
menuBar.add(menu1);
menuBar.add(menu2);
// ... 和其他两个菜单
frame.setJMenuBar(menuBar);
```
5. 定义`displayInfo`方法来更新文本区的内容:
```java
private void displayInfo(String info) {
textArea.setText(info);
}
```
6. (可选) 添加快捷键监听器到菜单项上:
```java
ActionMap actionMap = menu1.getActionMap();
actionMap.put(menuItem1.getActionCommand(), menuItem1.getAction());
menu1.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_1, InputEvent.CTRL_DOWN_MASK), menuItem1.getActionCommand());
```
7. 运行程序:
```java
SwingUtilities.invokeLater(() -> frame.setVisible(true));
```
阅读全文