永发信息网

JAVA中JPopupMenu的一点问题 大神请进

答案:3  悬赏:30  手机版
解决时间 2021-02-11 06:50
  • 提问者网友:寂寞梧桐
  • 2021-02-10 11:19
JAVA中JPopupMenu的一点问题 大神请进
最佳答案
  • 五星知识达人网友:狂恋
  • 2021-02-10 12:48
lz  你好


JPopupMenu应该是在点击右键的时候  实现吧



给lz一个完整的例子:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class _PopupMenu extends JFrame{
private JPopupMenu popupMenu;
private JMenuItem copy = new JMenuItem("复制");

public _PopupMenu(){
super("右键子菜单");

popupMenu = new JPopupMenu();
popupMenu.add(copy);

addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
//如果点击右键  显示子菜单
if(e.getButton() == MouseEvent.BUTTON3){
//获取相对于窗口的逻辑位置
Point p = e.getPoint();

popupMenu.show(e.getComponent(), p.x, p.y);
}

//否则不显示子菜单
else{
popupMenu.setVisible(false);
}
}
});

setSize(300,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(3);
setVisible(true);
}

public static void main (String[] args) {
new _PopupMenu();
}
}

运行效果:







希望能帮助你哈
追问请问下面的自动换行怎么不对了
lineWrap=new CheckboxMenuItem("自动换行");
else if(e.getSource()==lineWrap)
{

textarea.setLineWrap(!textarea.getLineWrap());

}
全部回答
  • 1楼网友:鱼芗
  • 2021-02-10 14:42
jpopmenu没有注册吧!在哪用就在哪add(kuaijir);
  • 2楼网友:罪歌
  • 2021-02-10 14:17

你添加右键菜单的方法错了:
textarea.setComponentPopupMenu(kuaijie);这样添加

我写了一个例子你看看:



package org.somken;
import java.awt.PopupMenu;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JTextArea;
public class JPopupMenuFrame extends JFrame{
public JPopupMenuFrame() {
// TODO Auto-generated constructor stub
super("右键菜单");
this.setSize(330, 200);
this.setLayout(null);
this.setLocation(100, 50);
JTextArea textarea=new JTextArea(100,10);
textarea.setBounds(10, 10, 100, 100);
JPopupMenu kuaijie=new JPopupMenu();
JMenuItem fuzhi1=new JMenuItem("复制");
kuaijie.add(fuzhi1);
//添加右键菜单
textarea.setComponentPopupMenu(kuaijie);
JPanel pane=new JPanel();
pane.add(textarea);
setContentPane(pane);
setVisible(true);
}
public static void main(String[] args) {
new JPopupMenuFrame();
}
}追问请问下面的自动换行怎么不对了
lineWrap=new CheckboxMenuItem("自动换行");
else if(e.getSource()==lineWrap)
{
textarea.setLineWrap(!textarea.getLineWrap());
}追答你可以设置一下滚动条 只出现垂直的滚动,把水平滚动关闭 就可以自动换行了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯