PopupDemo.java
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; class PopupDemo extends JPanel { private JPopupMenu m_popup = new JPopupMenu(); private JMenuItem m_rotateItem; String msg = null; public PopupDemo() { JMenuItem m_newItem = new JMenuItem("New"); m_newItem.setAccelerator(KeyStroke.getKeyStroke("control N")); JMenuItem m_editItem = new JMenuItem("Edit"); m_editItem.setEnabled(msg!=null); m_editItem.setAccelerator(KeyStroke.getKeyStroke("control E")); m_rotateItem = new JMenuItem("Rotate"); // m_rotateItem.setEnabled(false); m_rotateItem.setAccelerator(KeyStroke.getKeyStroke("control R")); JMenuItem m_deleteItem = new JMenuItem("Delete"); //m_deleteItem.setEnabled(false); m_deleteItem.setAccelerator(KeyStroke.getKeyStroke("control D")); m_popup.add(m_newItem); m_popup.add(m_editItem); m_popup.add(m_rotateItem); m_popup.add(m_deleteItem); setComponentPopupMenu(m_popup); m_newItem.addActionListener(actionEvent -> setmsg("New Object")); m_rotateItem.addActionListener(actionEvent -> setmsg("Rotate")); m_deleteItem.addActionListener(actionEvent -> setmsg(null)); } public void setmsg(String s) { msg = s; m_rotateItem.setEnabled(msg!=null); repaint(); } public void paintComponent(Graphics g) { super.paintComponent( g ); Font f = new Font("Serif", Font.BOLD, 18); g.setFont(f); if (msg!=null) g.drawString(msg,40,80); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { PopupDemo panel = new PopupDemo(); JFrame frame = new JFrame("PopupDemo"); frame.add(panel); frame.setSize(200,200); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); //frame.pack(); } }); } }
Maintained by John Loomis, updated Thu Apr 02 19:22:04 2020