簡體   English   中英

Popupmenu無法在Java中工作嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM