gpt4 book ai didi

java - 如何跨方法重用 protected JMenuItem 变量?

转载 作者:行者123 更新时间:2023-11-30 09:35:10 24 4
gpt4 key购买 nike

为什么在类 actionPerformed() 的第一行,我不能使用在 MainMenuBar() 类顶部声明的 protected JMenuItem menuItem; 变量?

第 2 行是我注释掉的,它有效。

但是,我希望能够跨类使用一个 JMenuItem 对象名称,而不必重新实例化它。

如何在这里正确重用 menuItem?

谢谢。

package base;

import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

public class MainMenuBar implements ActionListener {
protected JMenuBar menuBar;
protected JMenu menu;
protected JMenuItem menuItem;

JTextArea output;
String newline = "\n";

public JMenuBar getMenuBar() {
menuBar = new JMenuBar();

// 1st Menu
menu = new JMenu("File");
menu.setMnemonic(KeyEvent.VK_F);

menuItem = new JMenuItem("New Note");
menuItem.setMnemonic(KeyEvent.VK_N);

menu.add(menuItem);
menu.addSeparator();

menuItem = new JMenuItem("Exit");
menuItem.setMnemonic(KeyEvent.VK_X);

menu.addActionListener(this);
menu.add(menuItem);

menuBar.add(menu);

// 2nd Menu
menu = new JMenu("Help");
menu.setMnemonic(KeyEvent.VK_H);

menuItem = new JMenuItem("About Java Sticky Notes");
menuItem.setMnemonic(KeyEvent.VK_A);

menu.addActionListener(this);
menu.add(menuItem);

menuBar.add(menu);

return menuBar;
}

@Override
public void actionPerformed(ActionEvent e) {
menuItem source = new JMenuItem("MainMenuBar.java");
//JMenuItem source = (JMenuItem) (e.getSource());
String s = "Action event detected." + newline + " Event source: "
+ source.getText() + " (an instance of " + getClassName(source)
+ ")";
output.append(s + newline);
output.setCaretPosition(output.getDocument().getLength());
}

// Returns just the class name -- no package info.
protected String getClassName(Object o) {
String classString = o.getClass().getName();
int dotIndex = classString.lastIndexOf(".");
return classString.substring(dotIndex + 1);
}
}

最佳答案

你有一个语法错误,编译器假定 menuItem 是一个类,因为它后面是 source。更改以下内容:

menuItem source = new JMenuItem("MainMenuBar.java");

到:

menuItem = new JMenuItem("MainMenuBar.java");

但是您必须注意源代码,因为它在以下几行中使用。

关于java - 如何跨方法重用 protected JMenuItem 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532584/

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