public class PopupMenu extends JFrame {
private JPopupMenu menu;
private JTextArea text; public PopupMenu() {
JMenuItem m;
MenuItemListener mil = new MenuItemListener(); menu = new JPopupMenu();
text = new JTextArea(15, 30);
m = new JMenuItem("Item1");
m.addActionListener(mil);
menu.add(m);
m = new JMenuItem("Item2");
m.addActionListener(mil);
menu.add(m);
m = new JMenuItem("Item3");
m.addActionListener(mil);
menu.add(m); text.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
} public void mousePressed(MouseEvent e) {
} public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show(text, e.getX(), e.getY());
}
}
}); getContentPane().add(text);
} private class MenuItemListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
text.setText(((JMenuItem) e.getSource()).getText());
}
} public static void main(String[] args) {
PopupMenu frame = new PopupMenu(); frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
private JPopupMenu menu;
private JTextArea text; public PopupMenu() {
JMenuItem m;
MenuItemListener mil = new MenuItemListener(); menu = new JPopupMenu();
text = new JTextArea(15, 30);
m = new JMenuItem("Item1");
m.addActionListener(mil);
menu.add(m);
m = new JMenuItem("Item2");
m.addActionListener(mil);
menu.add(m);
m = new JMenuItem("Item3");
m.addActionListener(mil);
menu.add(m); text.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
} public void mousePressed(MouseEvent e) {
} public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show(text, e.getX(), e.getY());
}
}
}); getContentPane().add(text);
} private class MenuItemListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
text.setText(((JMenuItem) e.getSource()).getText());
}
} public static void main(String[] args) {
PopupMenu frame = new PopupMenu(); frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
text.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
} public void mousePressed(MouseEvent e) {
} public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
menu.show(text, e.getX(), e.getY());
}
}
});
这一段可以简单一点。
text.addMouseListener(new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
if (e.isPopupTrigger())
{
menu.show(text, e.getX(), e.getY());
} }
});
你用的是什么开发环境?
JBuilder还是什么?
to sealwzq(幻影)
你编译运行一下就知道能不能写短点了
^^^^^^text.addMouseListener(....);。BTWto sealwzq(幻影)registered(已注册)乃高人也,功力在你之上
我运行起来了!而且结果一样的
知道他是高人,所以我是在运行之后才说的,我确实运行起来了
CSDN高手如云,相比之下我只能算一个比较爱混分的菜鸟to sealwzq(幻影):不知你用的什么版本的JDK,最新版(1.4.2_05)编译会发生错误
PopupMenu.java:48: <anonymous PopupMenu$1> is not abstract and does not override abstract method mousePressed(java.awt.event.MouseEvent) in java.awt.event.MouseListener
public void mouseReleased(MouseEvent e) {
^
1 errorto 楼主:
手写的GUI默认是没有菜单的
有菜单一般是开发工具自动生成的
你可以在你的开发工具中查找相应的GUI选项来关闭自动生成菜单的功能
Java 语法规定:
实现一个接口必须实现其中的所有方法
有的时候太过自动化也容易引起概念混淆...