gpt4 book ai didi

java - 未检测到 JMenuItem Actionlistener

转载 作者:行者123 更新时间:2023-12-02 07:09:19 25 4
gpt4 key购买 nike

我正在为学校项目制作图书馆数据库,但我的菜单遇到了一些问题。所以主要问题是在 Action Listener 方法中,当我编写

(e.getSource()==m1Frame1)

我的程序未检测到菜单项并给出错误。我在网上查看了多个教程等,但似乎找不到任何方法来修复它并使其在单击特定项目时发生特定操作。任何有关此问题的帮助/解决方案将不胜感激。

import javax.swing.*;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.*;
import javax.swing.JFrame;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JOptionPane;
import java.awt.event.*;
import javax.swing.Icon;
import java.awt.*;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import java.awt.Color;

public class m1 extends JFrame {
JPanel pane = new JPanel();

JFrame a = new JFrame("Main Frame");
JFrame b = new JFrame("Sub Frame");

JButton checkOutButton = new JButton("check");
JButton returnButton = new JButton("return");

JMenu mb2 = new JMenu("Books");
// mb2.setForeground(Color.white);
JMenu open = new JMenu("Students");
// open.setForeground(Color.white);

public m1() {

JMenuBar mb;
mb = new JMenuBar() {
public void paintComponent(Graphics g) {
g.drawImage(Toolkit.getDefaultToolkit().getImage("G:"), 0, 0, this);
}
};

setSize(400, 400);
setBackground(Color.BLACK);
setTitle("Screen 2");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mb.add(open);

JMenuItem m1Frame1 = new JMenuItem("Create");
JMenuItem m1Frame2 = new JMenuItem("Delete");
JMenu m1Frame3 = new JMenu("Look-Up");
JMenuItem m1Frame4 = new JMenuItem("Check Fine");
JMenuItem m1Frame5 = new JMenuItem("Check Borrowed Books");
JMenuItem subM1 = new JMenuItem("Name");
JMenuItem subM2 = new JMenuItem("Student #");

open.add(m1Frame1);
open.add(m1Frame2);
open.add(m1Frame3);
open.add(m1Frame4);
open.add(m1Frame5);

m1Frame3.add(subM1);
m1Frame3.add(subM2);

mb.add(mb2);

JMenuItem m2Frame1 = new JMenuItem("Create");
JMenuItem m2Frame2 = new JMenuItem("Delete");
JMenu m2Frame3 = new JMenu("Look-Up");
JMenuItem subB1 = new JMenuItem("Title");
JMenuItem subB2 = new JMenuItem("Author");
JMenuItem subB3 = new JMenuItem("Category");
JMenuItem subB4 = new JMenuItem("ISBN");
JMenuItem m2Frame4 = new JMenuItem("Compare Star Rating");
JMenuItem m2Frame5 = new JMenuItem("Check If Checked Out");
JMenuItem m2Frame6 = new JMenuItem("Lost Book");

mb2.add(m2Frame1);
mb2.add(m2Frame2);
mb2.add(m2Frame3);
mb2.add(m2Frame4);
mb2.add(m2Frame5);
mb2.add(m2Frame6);

m2Frame3.add(subB1);
m2Frame3.add(subB2);
m2Frame3.add(subB3);
m2Frame3.add(subB4);

a.setJMenuBar(mb);

a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a.setSize(1280, 720);
a.setVisible(true);
b.setSize(600, 400);

m handler = new m();

pane.add(checkOutButton);
pane.add(returnButton);
add(pane);
checkOutButton.setVisible(false);
returnButton.setVisible(false);
checkOutButton.setBounds(60, 440, 220, 30);
returnButton.setBounds(60, 404, 100, 50);
checkOutButton.addActionListener(handler);
returnButton.addActionListener(handler);
}

public class m implements ActionListener, ItemListener {

public void actionPerformed(ActionEvent e) {
(e.getSource() == m1Frame1) {
a.setVisible(false);
setVisible(true);
checkOutButton.setVisible(true);
returnButton.setVisible(true);
}
}

public void itemStateChanged(ItemEvent e) {
}
}

public static void main(String[] args) {
m1 aa = new m1();
}
}

最佳答案

好的,您的代码存在一些问题,但我将详细介绍回答您问题的两个细节:

1) 您没有将操作监听器添加到代码中的任何 MenuItems 中。当我使用 addActionListener(handler) 将您的处理程序添加到 MenuItems 时;它开始触发。

2)您将处理程序作为 actionListener 添加到两个不可见的按钮(并且您遇到了其他布局问题)

关于java - 未检测到 JMenuItem Actionlistener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com