Показать PopMenu с Java Swing - PullRequest
       1

Показать PopMenu с Java Swing

0 голосов
/ 03 июля 2018

У меня проблема с popapMenu с java swing. Вы можете мне помочь? есть мой код

package com.bar.menu;

import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.plaf.nimbus.NimbusLookAndFeel;

@SuppressWarnings("serial")
public class PopMenuSample extends JFrame {

public PopMenuSample() {
    super("Pop menu exemple");
    this.setSize(600, 400);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);

    JPanel panel = (JPanel) getContentPane();
    // the content of the window
    JScrollPane LeftjScrollPane = new JScrollPane(new JTree());
    LeftjScrollPane.setPreferredSize(new Dimension(200, 0));

    JTextArea textArea = new JTextArea();
    JScrollPane rightjScrollPane = new JScrollPane(textArea);

    JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, 
    LeftjScrollPane, rightjScrollPane);
    panel.add(splitPane);

    JPopupMenu popupMenu = this.createPopupMenu();
    textArea.addMouseListener(new MouseAdapter() {

        @Override
        public void mousePressed(MouseEvent event) {
            if (event.isPopupTrigger()) {
                popupMenu.show(event.getComponent(), event.getX(), 
                  event.getY());
            }
        }
    });
}

private JPopupMenu createPopupMenu() {
    JPopupMenu popupMenu = new JPopupMenu();

    JMenuItem menuNew = new JMenuItem("New File");
    popupMenu.add(menuNew);
    return popupMenu;
}

public static void main(String[] args) throws Exception {

    UIManager.setLookAndFeel(new NimbusLookAndFeel());
    PopMenuSample menuSample = new PopMenuSample();
    menuSample.setVisible(true);

}

}

этот пример очень прост (окно содержит две зоны, слева - Jtree (), а справа - textArea, в этом месте я хочу активировать свою проблему, когда правая мышь, я хочу отобразить Новый файл ), но я не могу показать всплывающее меню Новый файл в текстовой области левой кнопкой мыши

Я использовал Java 8

Можете ли вы помочь мне и спасибо :)

1 Ответ

0 голосов
/ 03 июля 2018
public void mousePressed(MouseEvent event) {

Вы проверяете только событие mousePressed.

Триггер всплывающего окна может быть различным для разных LAF.

Вам также нужно проверить событие mouseReleased.

См. Раздел из учебника по Swing на Вызов всплывающего меню для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...