1. 程式人生 > 其它 >JAVA彈出式選單顯示異常

JAVA彈出式選單顯示異常

技術標籤:java程式碼規範

JAVA彈出式選單顯示異常

問題現象:
在文字區點選右鍵或者左鍵均可彈出彈出式選單,並且顯示方式異常。

如:
在這裡插入圖片描述
問題出現條件:

  • 在窗體中沒有先加入彈出式選單,而是先加入其他元件,如文字區(JTextArea)。

問題原因:
連結: 連結地址.

這是我寫的另一篇部落格,問題原因大致相同。

解決方法:

  • 在窗體中先加入彈出式選單元件再加入其他元件.

錯誤程式碼示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.
MouseEvent; public class PopupMenuException extends JFrame{ static JPopupMenu jm=new JPopupMenu(); //建立彈出式選單 static JMenuItem jm1=new JMenuItem("紅色"); //建立選單選項 static JMenuItem jm2=new JMenuItem("藍色"); static JMenuItem jm3=new JMenuItem("綠色"); static
JTextArea ja=new JTextArea("CSDN彈出式選單異常處理!!!!",5,20); //建立文字區 PopupMenuException() { super("彈出式選單異常處理"); //呼叫父類構造方法,即JFrame /**********************重點********************************************/ add(ja);add(jm); //窗體中先加入文字區,再加入彈出式選單 /**********************重點********************************************/
Handle handle =new Handle(); //建立Handle類物件 ja.addMouseListener(handle); //對文字區實現監聽 jm.add(jm1);jm.add(jm2);jm.add(jm3); //選單項加入到彈出式選單 setBounds(400,400,300,200); //設定窗體面積和大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { PopupMenuException p=new PopupMenuException(); } class Handle extends MouseAdapter { @Override public void mouseReleased(MouseEvent e) { //鬆開滑鼠時做的事件 jm.show((Component)e.getSource(),e.getX(),e.getY()); //鬆開滑鼠後彈出彈出式選單。 } } }

正確程式碼示例:

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class PopupMenuException extends JFrame{
    static JPopupMenu jm=new JPopupMenu();     //建立彈出式選單
    static JMenuItem jm1=new JMenuItem("紅色");    //建立選單選項
    static JMenuItem jm2=new JMenuItem("藍色");
    static JMenuItem jm3=new JMenuItem("綠色");
    static JTextArea ja=new JTextArea("CSDN彈出式選單異常處理!!!!",5,20);  //建立文字區

    PopupMenuException()
    {
        super("彈出式選單異常處理");        //呼叫父類構造方法,即JFrame
/*****************************重點***********************************/
        add(jm);add(ja);          //窗體中先加入彈出式選單,再加入文字區
/****************************重點************************************/
        Handle handle =new Handle();            //建立Handle類物件
        ja.addMouseListener(handle);            //對文字區實現監聽

        jm.add(jm1);jm.add(jm2);jm.add(jm3);     //選單項加入到彈出式選單

        setBounds(400,400,300,200);      //設定窗體面積和大小
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        PopupMenuException p=new PopupMenuException();
    }

    class Handle extends MouseAdapter
    {
        @Override
        public void mouseReleased(MouseEvent e) {       //鬆開滑鼠時做的事件

            jm.show((Component)e.getSource(),e.getX(),e.getY());   //鬆開滑鼠後彈出彈出式選單。
        }
    }
}

正確程式碼結果:
在這裡插入圖片描述
有問題歡迎留言,共同進步。