我有一个组件(Widget——扩展了JPanel),我在上面实现了一个简单的弹出菜单。当点击面板的边框时,它会起作用,基本上除了面板布局包含面板内其他组件的地方之外,其他地方都会起作用。
因此,如果面板中有一个JTable,我可以在单击旁边的菜单时调用它(如果没有其他内容),但是当单击JTable时,什么也不会发生(表显然位于面板顶部,阻止MouseAdapter注册单击)。
我能以某种方式在右键单击面板内的组件时调用弹出菜单吗?以下是我创建和调用菜单的示例代码:
private void initPopupMenu() {
popup = new JPopupMenu();
JMenuItem closeItem = new JMenuItem("Close");
closeItem.setActionCommand(WidgetConstants.Actions.CLOSE.name());
closeItem.addActionListener(this);
popup.add(closeItem);
JMenuItem minimizeItem = new JMenuItem("Minimize");
minimizeItem.setActionCommand(WidgetConstants.Actions.MINIMIZE.name());
minimizeItem.addActionListener(this);
popup.add(minimizeItem);
}
MouseInputListener componentListener = new MouseInputAdapter() {
@Override
public void mousePressed(MouseEvent me) {
// popup
if (me.isPopupTrigger()) {
popup.show(me.getComponent(), me.getX(), me.getY());
}
}
@Override
public void mouseReleased(MouseEvent ev) {
if (ev.isPopupTrigger()) {
popup.show(ev.getComponent(), ev.getX(), ev.getY());
}
}
}
@Override
public void setBorder(Border border) {
removeMouseListener(componentListener);
removeMouseMotionListener(componentListener);
if (border instanceof WidgetBorder) {
addMouseListener(componentListener);
addMouseMotionListener(componentListener);
}
super.setBorder(border);
}
谢谢你的任何提示。
首先:你不需要使用鼠标侦听器。每个JComponent都有方法setComponentPopupMenu(JPOppMenu)
。Secon:你可以遍历组件树,注册每个组件的弹出菜单。
下面是例子:
/**
* Provides component hierarchy traversal.
*
* @param aContainer start node for the traversal.
*/
private void traverse(Container aContainer, JPopupMenu aMenu) {
for (final Component comp : aContainer.getComponents()) {
if (comp instanceof JComponent) {
((JComponent) comp).setComponentPopupMenu(aMenu);
}
if (comp instanceof Container) {
traverse((Container) comp, aMenu);
}
}
}
我是Swing的新手,感谢任何帮助。我有以下情况:一个“主”类,我在其中定义了我的主JPanel和默认标签文本。一个“GUILabel”类(扩展JLabel),我在其中定义了文本标签的外观。一个“弹出菜单”类(扩展JPopupMenu),我在其中定义了弹出菜单的内容。 目标:当我右键点击一个面板时,弹出菜单应该出现(这已经起作用了)。当我选择这个弹出菜单的一个菜单项时,我点击的标签文本应该会改变。
我正在尝试使用Jetpack Compose重写我的项目UI。有没有办法在Android中使用jetpack compose添加弹出菜单?就像这个 我试图使用Stack()布局实现它,但结果并不理想。 而PopupState是 结果是 截图
mui框架内置了弹出菜单插件,弹出菜单显示内容不限,但必须包裹在一个含.mui-popover类的div中,如下即为一个弹出菜单内容: <div id="popover" class="mui-popover"> <ul class="mui-table-view"> <li class="mui-table-view-cell"><a href="#">Item1</a></li
本文向大家介绍Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例,包括了Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例的使用技巧和注意事项,需要的朋友参考一下 菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置
主要内容:/etc/rsyslog.conf配置文件的格式,/etc/rsyslog.conf配置文件的内容rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的。也就是说,日志服务的配置文件中主要定义了服务的名称、日志等级和日志记录位置。 /etc/rsyslog.conf配置文件的格式 该配置文件的基本格式如下所示: authpriv.* /var/log/secure #服务名称[连接符号]日志等级 日志记录位置
我对弹出菜单有问题。我想要的是,当用户在jlist上单击鼠标右键时,会出现一个弹出菜单。我创建了一个类,在其中我创建了弹出菜单,一个扩展了mouselistener的类,以及另一个将鼠标侦听器添加到jlist的类。在扩展mouselistener的类中,我调用弹出菜单的类并显示它。问题是弹出菜单没有出现。 当我点击我得到的是: 在released javax中按released enter。摆动J