Java 单击禁用的项目时如何触发操作?
我在谷歌上搜索了一下,但所有的例子都是针对启用了Java 单击禁用的项目时如何触发操作?,java,swing,mouselistener,jmenuitem,disabled-control,Java,Swing,Mouselistener,Jmenuitem,Disabled Control,我在谷歌上搜索了一下,但所有的例子都是针对启用了JMenuItem的情况 我想做的是,我希望在单击时禁用我的JMenuItem(因为权限有限),以显示一个弹出框,请求用户升级,以便他们可以访问所述JMenuItem 以下是我目前拥有的精简版本,命令行上没有打印任何内容: public class ExportMenuItem extends JMenuItem { public ExportMenuItem() { super("Menu Item Name");
JMenuItem
的情况
我想做的是,我希望在单击时禁用我的JMenuItem
(因为权限有限),以显示一个弹出框,请求用户升级,以便他们可以访问所述JMenuItem
以下是我目前拥有的精简版本,命令行上没有打印任何内容:
public class ExportMenuItem extends JMenuItem
{
public ExportMenuItem()
{
super("Menu Item Name");
addMouseListener(new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent mouseEvent)
{
if (!isEnabled())
{
JOptionPane.showMessageDialog(editor.getFrame(), "Hello world.");
System.out.println("Sys print hello.");
}
System.out.println("Sys print hello outside.");
}
});
}
}
这就是你要找的吗
import javax.swing.*;
import java.awt.event.*;
public class ExportMenuItem extends JMenuItem{
public ExportMenuItem(){
super("menu item");
addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent mouseEvent){
if (!isEnabled()) {
JOptionPane.showMessageDialog(null, "Upgrade me!");
}//end of if
}//end of mouseClicked
public void mouseExited(MouseEvent mouseEvent){}
public void mouseEntered(MouseEvent mouseEvent){}
public void mouseReleased(MouseEvent mouseEvent){}
public void mousePressed(MouseEvent mouseEvent){}
// And the remaining methods to implement...
});//end of anonymous class
}//end of constructor
public static void main(String[] a){
JFrame f = new JFrame();
JMenu menu = new JMenu("menu");
JMenuBar menuBar = new JMenuBar();
f.setJMenuBar(menuBar);
f.setSize(300, 300);
f.setVisible(true);
menuBar.add(menu);
JMenuItem item = new ExportMenuItem();
menu.add(item);
item.setEnabled(false);
}//end of main
}//end of class
可能是一种完全不同的方法,对用户来说更符合逻辑: 在菜单项后面放置描述文字:
private void addRestartHint(JMenuItem m, String text) {
final String spaceholder = " ";
String t = m.getText() + spaceholder;
m.setLayout(new BorderLayout());
m.setText(t);
m.add(new JLabel(text), BorderLayout.EAST);
}
是否为禁用的菜单项显示工具提示?为了更快地获得更好的帮助,发布一个(最小的完整和可验证的示例)。代码对我来说运行得很好。
//其余实现…
的方法使用MouseAdapter
。我还创建了一个JMenuItem
,即使它被禁用,它也会对鼠标单击做出同样的响应。您应该创建一个显示它不工作的。否则,在确定问题时,这只是猜测,因为camickr和我都在我们这边验证了它似乎如预期的那样起作用。