import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.*;
public class UseRightButton extends JFrame implements MouseListener
{
JPanel panel;
JLabel display;
public UseRightButton()
{
setTitle("Use right button and popup menu");
setSize(400,300);
panel =new JPanel();
display =new JLabel(" ");
display.setOpaque(true);
display.setBackground(Color.yellow);
panel.add(display);
panel.addMouseListener(this);
display.addMouseListener(this);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(panel, BorderLayout.CENTER);
}
public static void main(String[] args)
{
UseRightButton rb = new UseRightButton();
rb.setVisible(true);
}
public void mousePressed(MouseEvent e)
{
if (e.getSource() == panel && e.getButton() == MouseEvent.BUTTON3)
{
MyPopupMenu popup = new MyPopupMenu(this);
popup.show((Component)panel, e.getX(), e.getY());
}
else if (e.getSource() == display && e.getButton() == MouseEvent.BUTTON3)
{
MyPopupMenu popup = new MyPopupMenu(this);
popup.show((Component)display, e.getX(), e.getY());
}
}
public void mouseEntered(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e)
{
}
public void mouseReleased(MouseEvent e)
{
}
}
import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MyPopupMenu extends JPopupMenu implements ActionListener
{
JMenuItem sayHello, sayHelloAgain, sayByeBye;
UseRightButton useRightButton;
public MyPopupMenu(UseRightButton urb)
{
useRightButton = urb;
sayHello = new JMenuItem("Say Hello");
sayHelloAgain = new JMenuItem("Say Hello again");
sayByeBye = new JMenuItem("Say Bye Bye");
sayHello.addActionListener(this);
sayHelloAgain.addActionListener(this);
sayByeBye.addActionListener(this);
add(sayHello);
this.addSeparator();
add(sayHelloAgain);
add(sayByeBye);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == sayHello)
{
System.out.println();
useRightButton.display.setText("Hello!");
}
else if (e.getSource() == sayHelloAgain)
{
System.out.println("Hello! Hello!");
useRightButton.display.setText("Hello! Hello!");
}
else if (e.getSource() == sayByeBye)
{
System.out.println("Bye Bye!");
useRightButton.display.setText("Bye Bye!");
}
}
}两个类,你试下,我今天解决的。
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;public class forPopup implements MouseListener{
JFrame frame=new JFrame("forPopup");
JPopupMenu popMenu=new JPopupMenu();
JMenuItem mi1=new JMenuItem("新建");
JMenuItem mi2=new JMenuItem("打开");
JPanel panel=new JPanel();
public forPopup(){
popMenu.add(mi1);
popMenu.addSeparator();
popMenu.add(mi2);
popMenu.addSeparator();
panel.add(popMenu);
frame.setLayout(new FlowLayout());
frame.add(panel);
frame.addMouseListener(this);
frame.setSize(400,300);
frame.setLocation(300,250);
frame.setResizable(false);
frame.setVisible(true);
}
public static void main(String[] args){
forPopup pp=new forPopup();
} @Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
} @Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
} @Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
} @Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
tiggerEvent(e);
} @Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
tiggerEvent(e);
}
private void tiggerEvent(MouseEvent e){
if(e.isPopupTrigger()){//主要的一步
popMenu.show(e.getComponent(),e.getX(),e.getY());
}
}
}
菜单元素是用JMenuItem
菜单元素添加事件用addActionListener
这是在文本区弹出对话框添加的事件
textArea.addMouseListener(
new MouseAdapter()
{
public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
popUpMenu.show(textArea,e.getX(),e.getY());
if(e.getButton() == e.BUTTON1)
{
checkSelectText();
}
}
}
);
我刚编了个记事本程序,可以交流下