2011-12-30 7 views
1

私はシンプルな付箋アプリを作っています。いつでもJTextAreaをクリックすると、JPopupMenuが表示されます。JavaでJTextAreaを右クリックするとJPopupMenuが表示されますか?

//I've tried my best to follow SSCE 

private JTextArea textArea = new JTextArea(); 
private JPopupMenu popup = new JPopupMenu("Popup Menu"); 
private JMenuItem hideBar = new JMenuItem("Hide Bar"); 
private JMenuItem hideTitle = new JMenuItem("Hide Item"); 

public mySticky(){ 

add(textArea); //Text Area is using the whole Frame "Sticky Note" 
popup.add(hideBar); //adding MenuItem 
popup.add(hideTitle); //adding MenuItem 
//addMouseListener(new popupTriggerListener()); 
textArea.addMouseListener(new popupTriggerListener()); 

} 


private class popupTriggerListener extends MouseAdapter{ 
    public void MousePressed(MouseEvent e){ 
     if(e.isPopupTrigger()) 
      popup.show(textArea,e.getX(),e.getY()); //I've added texArea I'm not sure what to add inside. 
    } 

    public void MouseReleased(MouseEvent e){ 
     if(e.isPopupTrigger()) 
      popup.show(textArea,e.getX(),e.getY()); //I've added texArea I'm not sure what to add inside. 
    } 

    public void MouseClicked(MouseEvent e){ 

    } 
} 
+0

hmmmここに何か不足しています。 'JTextArea'はコンポーネントなので、' e.getComponent'を使うべきですか? – Sobiaholic

答えて

3

私はどのようにこれはおそらくすることができ

SSCE

に従うことを私の最善を試してみた:それは、付箋紙は非常に明らかなので、全体のアプリは textArea

ショートコードになりますコードがコンパイルされていないことを考えればSSCCEですか?リンクをもう一度読んでみてください。

まずは、スイングチュートリアルBringing Up a Popup Menuのセクションを読んで作業を開始することをお勧めします。

うーん、私はあなたがメソッドをオーバーライドする場合メソッドのシグネチャをpreceedすべき@Overrideの文が欠落している、ここで

何かが欠けています。これにより、入力ミスを防ぐことができます。

+3

彼には、setComponentPopupMenuメソッドもありません。http://docs.oracle.com/javase/6/docs/api/javax/swing/JComponent.html#setComponentPopupMenu%28javax.swing.JPopupMenu%29 –

関連する問題