也许这是一个坏主意,但我为JMenuItem编写了一个子类来添加一个新的构造函数。让我们称之为JMenuItemX
:
import java.awt.event.ActionListener;
import javax.swing.JMenuItem;
@SuppressWarnings("serial")
public class JMenuItemX extends JMenuItem
{
public JMenuItemX(final String the_text, final char the_mnemonic,
final ActionListener the_action)
{
super(the_text);
setMnemonic(the_mnemonic);
addActionListener(the_action);
}
}
现在,我正在尝试使用AbstractAction向组件添加工具提示:
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
@SuppressWarnings("serial")
public class AboutAction extends AbstractAction
{
public AboutAction()
{
super("About");
putValue(SHORT_DESCRIPTION, "Show the popup window");
}
@Override
public void actionPerformed(final ActionEvent the_event)
{
JOptionPane.showMessageDialog(null, "Hello World!");
}
}
并像这样构造组件(JFrame、JMenuBar 和 JMenu 已经设置好):
menu.add(new JMenuItemX("About", 'a', new AboutAction()));
(如您所见,如果我要添加多个菜单项,这种单行格式更易于阅读。)
菜单项以正确的文本可见,并且助记符和操作按预期工作。但是没有工具提示......但是,如果我只是使用 JMenuItem,工具提示就可以了!
JMenuItem about = new JMenuItem(new AboutAction());
about.setMnemonic('a');
menu.add(about);
如何让 AbstractAction 与我的 JMenuItem 子类一起使用?