标签: jpopupmenu

如何在Java Swing中创建右键单击上下文菜单?

我正在创建一个右键单击上下文菜单,通过JMenu右键单击实例化并将其位置设置为鼠标位置...是否有更好的方法?

java swing contextmenu jpopupmenu

108
推荐指数
4
解决办法
14万
查看次数

如何用菜单创建JButton?

我想在我的应用程序中创建一个工具栏.如果单击该工具栏上的按钮,它将弹出一个菜单,就像在Eclipse的工具栏中一样.我不知道如何在Swing中这样做.有谁可以帮助我吗?我试过谷歌,但一无所获.

java swing menu jbutton jpopupmenu

32
推荐指数
2
解决办法
4万
查看次数

Swing和Nimbus:替换JPopupMenu的背景(附加到JMenu)

Nimbus通常看起来很棒,但对于某些颜色组合,结果是非最佳的.在我的情况下,a的背景JPopupMenu不适合,这就是我想手动设置的原因.

我在Java 7上,有趣的是,Nimbus完全忽略了UIManager(像PopupMenu.background)中某些属性的设置.所以我唯一的选择是创建JPopupMenu该覆盖的子类paintComponent(...).我知道,那很讨厌,但至少它起作用了.

但是,如果你添加一个JMenu到另一个菜单,它嵌入它自己的实例,JPopupMenu我无法弄清楚如何用我自己的子类替换它.

即使PopupMenuUI为嵌入式实例分配自己也没有带来任何结果.如果直接从JPopupMenuoverriden paint(...)方法继承而被调用,但是,无论我做了什么,都没有绘制.如果继承的javax.swing.plaf.synth.SynthPopupMenuUI paint甚至没有被调用,结果就是我根本没有设置自己PopupMenuUI.

所以简单的问题是:如何JPopupMenu使用Nimbus作为L&F,在Java 7上调整一个或者(如果这更容易)的背景颜色?

编辑:代码示例

看一下下面的代码和结果:

public static void main(final String[] args) {
    try {
        UIManager.setLookAndFeel(NimbusLookAndFeel.class.getCanonicalName());
        UIManager.getLookAndFeelDefaults().put("PopupMenu.background", Color.GREEN);
        UIManager.getLookAndFeelDefaults().put("Panel.background", Color.RED);
        UIManager.getLookAndFeelDefaults().put("List.background", Color.BLUE);
    } catch (ClassNotFoundException | InstantiationException
            | IllegalAccessException | UnsupportedLookAndFeelException e) {
        e.printStackTrace();
    }
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(200,200);

    JPanel panel = new JPanel(new BorderLayout());
    panel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    JList …
Run Code Online (Sandbox Code Playgroud)

java swing nimbus jpopupmenu

15
推荐指数
3
解决办法
6815
查看次数

将垂直滚动添加到JPopupMenu?

我想添加一种滚动菜单项的方法JPopupMenu,就像滚动菜单中的项目列表一样JComboBox.

假设我有10个菜单项.我想一次只显示5个菜单项,我会在底部或顶部使用垂直滚动按钮JPopupMenu来显示未列出的菜单项并隐藏我刚看到的菜单项.

可能吗?我正在使用JIDE软件JideSplitButton,它会JPopupMenu在点击时显示.我试图保持我放置的命令栏的外观和感觉JideSplitButton,所以JComboBox除非我真的需要,否则我不想用它替换它.

java swing jpopupmenu

14
推荐指数
4
解决办法
1万
查看次数

将JPopupMenu添加到TrayIcon

我想添加JPopupMenu到任务栏作为TrayIcon( systemTray.add(trayIcon)),但我还没有找到办法这样做.从文档中,TrayIcon的构造函数如下所示:

public TrayIcon(Image image,
            String tooltip,
            PopupMenu popup)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以做到这一点吗?

java swing trayicon system-tray jpopupmenu

14
推荐指数
2
解决办法
4683
查看次数

使用java左键单击任务托盘图标上的打开弹出窗口(菜单)

我正在使用java中的任务托盘图标,我喜欢打开一个弹出菜单,使用左键单击相同的弹出菜单,因为我在右键单击打开,请帮助我快速响应.

提前致谢...

这是用于右键单击的代码需要在左键单击时显示相同的弹出窗口...不要忘记放置任何图像@"src/img"文件夹,名称为"titleImg.jpg"

只需运行此...这是一个工作示例,但我必须使用左键单击显示相同的弹出窗口

我已经检查了鼠标监听器,它听左键单击托盘图标,但如何显示弹出菜单使用该???

    package com.abc.dao;

import java.awt.AWTException;
import java.awt.CheckboxMenuItem;
import java.awt.Menu;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;

public class MyTaskTray {
    public static void main(String arg[]){

        //Check the SystemTray is supported
        if (!SystemTray.isSupported()) {
            System.out.println("SystemTray is not supported");
            return;
        }
        final PopupMenu popup = new PopupMenu();
        final TrayIcon trayIcon =
                new TrayIcon(Toolkit.getDefaultToolkit().getImage(new java.io.File("").getAbsolutePath()+"/bin/img/titleImg.jpg"), "Library Drop");
        final SystemTray tray = SystemTray.getSystemTray();

        // Create a pop-up menu components
        MenuItem aboutItem = new MenuItem("About");
        CheckboxMenuItem cb1 = …
Run Code Online (Sandbox Code Playgroud)

java swing trayicon jpopupmenu

12
推荐指数
1
解决办法
2万
查看次数

停止JPopupMenu窃取焦点

我有一个JTextField我希望建议结果与用户的输入匹配.我在一个JList包含的内容中显示这些建议JPopupMenu.

但是,当以编程方式打开弹出菜单时show(Component invoker, int x, int y),焦点将从中获取JTextField.

奇怪的是,如果我打电话setVisible(true),焦点不会被盗; 但是然后JPopupMenu没有连接到任何面板,并且当盒子打开时最小化应用程序时,它仍然涂在窗口上.

我也尝试将焦点重置为JTextField使用requestFocus(),但后来我必须使用恢复插入位置SwingUtilities.invokeLater(),并且调用后面的东西给用户一点点余地来弄乱现有内容/覆盖它/或做其他不可预知的事情.

我得到的代码是有效的:

JTextField field = new JTextField();
JPopupMenu menu = new JPopupMenu();

field.addKeyListener(new KeyAdapter() {
    public void keyTyped(KeyEvent e) {
        JList list = getAListOfResults();

        menu.add(list);
        menu.show(field, 0, field.getHeight());
    }
});
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议最好的途径,以JPopupMenu编程方式显示,同时保持对焦点的关注JTextField

java swing focus jpopupmenu

11
推荐指数
1
解决办法
2732
查看次数

在检查复选框时如何防止JPopUpMenu消失?

我想JCheckBoxMenuItem在一个中使用s JPopupMenu.它可以工作,但问题是当选中或取消选中复选框项时,弹出菜单会消失.因此,如果想要检查/取消选中多个项目,则需要重复启动弹出窗口,这很烦人.

奇怪的是,如果我只使用JCheckBox菜单中的普通项(而不是JCheckBoxMenuItems),行为就像它应该的那样:弹出窗口停留在那里,可以选中/取消选中复选框.完成后,只需在外部单击即可关闭弹出窗口.

如果有弹出的项目,如何让弹出窗口表现得像JCheckBoxMenuItem?我更喜欢使用JCheckBoxMenuItems,因为它们的外观.

swing jpopupmenu jcheckbox

10
推荐指数
1
解决办法
3919
查看次数

使用JPopupMenu的JTable

如何防止触发并JPopupMenuMouse Cursor在选中时显示JTable'Row

我的问题:如果有另一种方式,getBounds从选定的行,并确定/比较与Mouse位置...

我简单的sscce演示了不想要的相反状态,任何行都可以选择并JPopupMenu从整体触发JTable

import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class TableCheckBox extends JFrame {

    private static final long serialVersionUID = 1L;
    private JTable table;

    public TableCheckBox() {
        Object[] columnNames = {"Type", "Company", "Shares", "Price", "Boolean"};
        Object[][] data = {
            {"Buy", "IBM", new Integer(1000), new Double(80.50), false},
            {"Sell", "MicroSoft", new Integer(2000), new Double(6.25), true},
            {"Sell", "Apple", new Integer(3000), new Double(7.35), true},
            {"Buy", "Nortel", new Integer(4000), new Double(20.00), …
Run Code Online (Sandbox Code Playgroud)

java swing jtable onmouseover jpopupmenu

10
推荐指数
2
解决办法
1万
查看次数

创建一个检查属性窗口,按钮驱动为JDialog

我原来问的并没有明确说明我的问题/问题,所以我会更好地解释.我有一个JButton,设置一个JDialog可见.JDialog将WindowListener其设置为在windowDeactivated()事件中不可见,该事件在用户在对话框外单击时触发.按钮ActionListener检查对话框是否为可见,如果为true则隐藏它,如果为false则显示该对话框.

windowDeactivated()只要用户在对话框外单击,就会始终触发是否单击按钮.我遇到的问题是当用户单击按钮关闭对话框时.该对话框由关闭WindowListener,然后ActionListener尝试显示它.

如果windowDeactivated()没有setVisible(false),则对话框仍然打开,但在父窗口后面.我要求的是如何访问里面的点击位置windowDeactivated().如果我知道用户点击了按钮并且windowDeactivated()可以跳过隐藏对话框,那么按钮ActionListener会看到它仍然可见并隐藏它.

public PropertiesButton extends JButton {

    private JDialog theWindow;

    public PropertiesButton() {
        theWindow = new JDialog();
        theWindow.setUndecorated(true);
        theWindow.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        theWindow.add(new JMenuCheckBoxItem("Something"));
        theWindow.addWindowListener(new WindowListener() {
            // just an example, need to implement other methods
            public void windowDeactivated(WindowEvent e) {
                theWindow.setVisible(false);
            }
        });
        this.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (theWindow.isVisible()) {
                    theWindow.setVisible(false);
                } else { …

java swing jdialog jbutton jpopupmenu

8
推荐指数
1
解决办法
1423
查看次数