用java实现点击“考生信息”菜单,选择“登录”子菜单,进入到用户登录界面。 提示:把登录界面中的所有组件放入到一个JPanel-1 (2) 点击“试卷类型”菜单,选择“数学试卷”,进入数学试卷界面。 提示:把数学试卷界面中的所有组件放入到一个JPanel-2 (3) 点击“试卷类型”菜单,选择“计算机试卷”,进入计算机试卷界面。 提示:把计算机试卷界面中的所有组件放入到一个JPanel-3 然后在卡片布局上,切换3个JPanel
时间: 2023-12-25 14:04:44 浏览: 67
可以使用以下代码实现:
```java
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class MenuDemo extends JFrame implements ActionListener {
private JMenuBar menuBar;
private JMenu studentMenu, examMenu;
private JMenuItem loginItem, mathItem, computerItem;
private JPanel cardPanel;
private CardLayout cardLayout;
private JPanel loginPanel, mathPanel, computerPanel;
public MenuDemo() {
// 初始化菜单栏
menuBar = new JMenuBar();
studentMenu = new JMenu("考生信息");
examMenu = new JMenu("试卷类型");
loginItem = new JMenuItem("登录");
mathItem = new JMenuItem("数学试卷");
computerItem = new JMenuItem("计算机试卷");
// 添加菜单项
studentMenu.add(loginItem);
examMenu.add(mathItem);
examMenu.add(computerItem);
// 添加菜单
menuBar.add(studentMenu);
menuBar.add(examMenu);
// 设置菜单栏
setJMenuBar(menuBar);
// 初始化卡片布局和面板
cardPanel = new JPanel();
cardLayout = new CardLayout();
cardPanel.setLayout(cardLayout);
// 初始化登录面板
loginPanel = new JPanel();
// 添加登录面板的组件
// 初始化数学试卷面板
mathPanel = new JPanel();
// 添加数学试卷面板的组件
// 初始化计算机试卷面板
computerPanel = new JPanel();
// 添加计算机试卷面板的组件
// 把三个面板添加到卡片布局中
cardPanel.add(loginPanel, "login");
cardPanel.add(mathPanel, "math");
cardPanel.add(computerPanel, "computer");
// 设置窗口属性
setTitle("Menu Demo");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
// 添加监听器
loginItem.addActionListener(this);
mathItem.addActionListener(this);
computerItem.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == loginItem) {
cardLayout.show(cardPanel, "login");
} else if (e.getSource() == mathItem) {
cardLayout.show(cardPanel, "math");
} else if (e.getSource() == computerItem) {
cardLayout.show(cardPanel, "computer");
}
}
public static void main(String[] args) {
new MenuDemo();
}
}
```
在这个示例中,我们使用了 `CardLayout` 布局,它可以使多个面板在同一个容器中切换显示。在 `MenuDemo` 类的构造函数中,我们创建了菜单栏和菜单项,并添加到窗口中。我们还创建了三个面板,分别用于登录、数学试卷和计算机试卷,并将它们添加到卡片布局中。在菜单项的监听器中,我们根据所选的菜单项,使用 `CardLayout` 布局切换对应的面板的显示。
阅读全文