PopupDemo.javaimport 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