JAVA彈出式選單顯示異常
阿新 • • 發佈:2020-12-11
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()); //鬆開滑鼠後彈出彈出式選單。
}
}
}
正確程式碼結果:
有問題歡迎留言,共同進步。