Я хотел бы программно развернуть конкретный JMenuItem в JPopup. Например, в коде нижеПрограммно развернуть sub JMenuItems
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
public class AutoExpandSubMenusDemo extends JFrame {
private final JPopupMenu popup = new JPopupMenu("Popup");
public AutoExpandSubMenusDemo() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
JMenu menuB = new JMenu("B");
menuB.add(new JMenuItem("X"));
JMenuItem menuY = menuB.add(new JMenuItem("Y"));
menuB.add(new JMenuItem("Z"));
popup.add(new JMenuItem("A"));
popup.add(menuB);
popup.add(new JMenuItem("C"));
final JButton button = new JButton("Show Popup Menu");
button.addActionListener(new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
popup.show(button, 0, button.getHeight());
// Show menuY
}
});
JPanel buttonPanel = new JPanel();
buttonPanel.add(button);
getContentPane().add(buttonPanel);
}
public static void main(String[] args) {
AutoExpandSubMenusDemo f = new AutoExpandSubMenusDemo();
f.setSize(500, 300);
f.setVisible(true);
}
}
Я хотел бы расширить всплывающее меню, так что элементы B (menuB)/Y (menuY) разлагаются и выбирается при нажатии кнопки.
Извините, если это то, что легко сделать, но я искал вокруг и не могу понять это.
я найти
MenuSelectionManager.defaultManager().setSelectedPath(...)
однако это не работает, когда я попробовал это и Javadoc определяет, что она вызывается из LaF и не должен вызываться клиентами.
Любая помощь очень ценится.
Если вы просто хотите, то же самое действие (от кнопки и пункта меню), происходит при нажатии на кнопку, просто используйте [ 'Action' ] (http://docs.oracle.com/javase/8/docs/api/javax/swing/Action.html). Подробнее см. В разделе [Как использовать действия] (http://docs.oracle.com/javase/tutorial/uiswing/misc/action.html). Кнопка кнопки и кнопки меню может использовать одно и то же действие. На самом деле не вижу смысла вскрывать всплывающее окно, чтобы выбрать его, если только его только для глазных конфет –
По выбранному Я имею в виду подсветку, которая возникает, когда мышь находится над элементом меню или она была перенесена на клавиатуру , а не фактическое инициирование связанного действия. Причина, по которой я делаю это, заключается в том, что я пытаюсь реализовать функцию справки, которая показывает пользователей, где определенные параметры, путем расширения соответствующих меню. – Jamesy82
OK +1 хороший вопрос :-D –