マウス位置にポップアップメニューを表示するプログラムです。
package test; import java.awt.*;//BorderLayoutなどのパッケージ用 import java.awt.event.*;//MouseListenerなどのパッケージ用 import javax.swing.*;//JPanelなどのパッケージ用 import javax.swing.border.*;//LineBorderのパッケージ用 class MainPanel extends JPanel implements MouseMotionListener,MouseListener { JLabel label = new JLabel("マウス座標:"); JLabel labelX = new JLabel("x", JLabel.RIGHT);//マウス座標X JLabel labelY = new JLabel("y", JLabel.RIGHT);//マウス座標Y JTextArea text = new JTextArea(); JScrollPane pane = new JScrollPane(text); JPopupMenu popupMenu = new JPopupMenu(); public MainPanel() { this.setLayout(null); LineBorder border = new LineBorder(Color.BLUE, 1); this.labelX.setBorder(border);//ラベルに上記の枠をセット this.labelY.setBorder(border);//ラベルに上記の枠をセット this.add(label);//パネルに配置 this.add(labelX);//パネルに配置 this.add(labelY);//パネルに配置 this.add(pane);//パネルに配置 label.setBounds(10, 10, 95, 20);//ラベルの位置(10, 10)とサイズ(95, 20)を指定 labelX.setBounds(100, 10, 50, 20); labelY.setBounds(155, 10, 50, 20); pane.setBounds(10, 35, 370, 220); this.text.addMouseMotionListener(this);//マウス移動などのメソッドがあるオブジェクトをセット this.text.addMouseListener(this);//マウスプレスなどのメソッドがあるオブジェクトをセット } //指定コンポーネントの上で、マウスのボタンを押してドラッグすると呼び出されます。 public void mouseDragged(MouseEvent e) { } //ボタンを押さずに、マウスを指定コンポーネントで移動すると呼び出されます。 public void mouseMoved(MouseEvent e) { Point p = e.getPoint();//ドマウスの座標取得 this.labelX.setText("" + p.x); this.labelY.setText("" + p.y); } public void mouseEntered(MouseEvent e) {// コンポーネントにマウスが入ると呼び出されます。 } public void mousePressed(MouseEvent e) {// コンポーネント上でマウスボタンが押されると呼び出されます。 Point p = e.getPoint();//ドマウスの座標取得 this.popupMenu.add("AA"); JMenu menu = new JMenu("BB"); menu.add("BBBB"); this.popupMenu.add(menu); this.popupMenu.show(this.text, p.x, p.y); } public void mouseReleased(MouseEvent e) {// コンポーネント上でマウスボタンが離されると呼び出されます。 } public void mouseClicked(MouseEvent e) {//マウスクリック } public void mouseExited(MouseEvent e) {//コンポーネントからマウスが出ると呼び出されます。 } } class TestFrame extends JFrame { MainPanel panel = new MainPanel(); public TestFrame() {//コンストラクタ this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.getContentPane().add(panel, BorderLayout.CENTER); this.setSize(400, 300); this.setVisible(true); } } public class TestJPopupMenu extends JApplet {//アプレット時 MainPanel panel = new MainPanel(); public TestJPopupMenu() {//コンストラクタ this.getContentPane().add(panel, BorderLayout.CENTER); } public static void main(String[] args) {//ローカル起動時 new TestFrame(); } public void newTestFrame() { new TestFrame(); } }