[英]Popupmenu wont work in java?
我正在構建一個文字處理器程序,作為我在學校Java課的作業,當我右鍵單擊我的文本區域時,要使popupmenu正常工作非常困難。 我已經構造了彈出菜單,並讓我的文本區域收聽我的popuplistener,並且我覆蓋了按下鼠標和釋放鼠標的功能,
class popupframe extends JFrame{
JMenuItem copy;
JMenuItem paste;
JTextArea textarea = new JTextArea();
JPopupMenu pop;
popupframe(){
Container cpane = getContentPane();
setSize(300 , 300);
setLocation(300, 300);
setTitle("Test");
JPopupMenu pop = new JPopupMenu();
copy = new JMenuItem("copy");
paste = new JMenuItem("paste");
textarea = new JTextArea("something goes here", 5, 5);
pop.add(copy);
pop.add(paste);
PopupListener popuplistener = new PopupListener();
textarea.addMouseListener(popuplistener);
}
class PopupListener extends MouseAdapter{
public void MousePressed(MouseEvent e){
popit(e);
}
public void MouseReleased(MouseEvent e){
popit(e);
}
private void popit(MouseEvent e){
if(e.isPopupTrigger()){
pop.show(e.getComponent(), e.getX(), e.getY());
}
}
}
}
我看不到為什么它不起作用,但也許我缺少一些重要的東西,請幫忙! 非常感激
將@Override
批注添加到您認為@Override
的方法中...
class PopupListener extends MouseAdapter {
@Override
public void MousePressed(MouseEvent e) {
System.out.println("Pressed");
popit(e);
}
@Override
public void MouseReleased(MouseEvent e) {
System.out.println("Pressed");
popit(e);
}
您現在會發現它無法編譯,但是為什么呢? 因為Java區分大小寫,並且按照慣例,方法名稱以小寫字母開頭
您會發現類似...
class PopupListener extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
popit(e);
}
@Override
public void mouseReleased(MouseEvent e) {
popit(e);
}
@Override
public void mouseClicked(MouseEvent e) {
popit(e);
}
private void popit(MouseEvent e) {
if (e.isPopupTrigger()) {
pop.show(e.getComponent(), e.getX(), e.getY());
}
}
}
會更好地工作。 話雖如此,您通常會發現
textarea.setComponentPopupMenu(pop);
明顯更容易且更不容易出錯(並且不會像您的示例代碼那樣導致NullPointerException
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.