默认

[已解决] JPopupMenu还是不能实现文本组件可编辑

查看数: 26535 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-04-18 18:21

正文摘要:

   虽然3.7的版本的更新说明里说:      v3.7 更新说明       发布于:2015-11-13 17:231、解决了JPopupMenu中显示的文本组件无法编辑的问题;    ...

评论

zjj7188 发表于 8 年前
引用:zjj7188 发表于 2016-04-26 17:16
这个要怎么结贴呀,怎么显示已解决

好的,谢谢
zjj7188 发表于 8 年前
这个要怎么结贴呀,怎么显示已解决

点评

JackJiang  说:
直接编辑修改标题就行了。我来改吧  (8 年前)
JackJiang 发表于 8 年前
引用:zjj7188 发表于 2016-04-19 17:51
我的jdk是jdk1.8.0_45
你的测试的时候源码 org.jb2011.lnf.beautyeye.ch7_popup.TranslucentPopupFactor ...

我靠,我提交的代码忘了设成true了,v3.7里应该是要被设置成true的!
[已解决] JPopupMenu还是不能实现文本组件可编辑_be.png

点评

JackJiang  说:
github和osc git里的v3.7已经重新更新了!  (8 年前)
zjj7188 发表于 8 年前
引用:JackJiang 发表于 2016-04-19 17:20
我确信我当时测过上面给你的代码里是可以编辑的。

你或许更新一下JDK试试?排除一下JDK的原因。我用的 ...

我的jdk是jdk1.8.0_45
你的测试的时候源码 org.jb2011.lnf.beautyeye.ch7_popup.TranslucentPopupFactory.java
这里是 setFocusableWindowState(false); ?
我改为true之后才可以编辑
JackJiang 发表于 8 年前
引用:zjj7188 发表于 2016-04-19 16:51
嗯,我用的是beautyeye-3.7,我直接把上面的代码复制过来运行了下,还是不能编辑的,把
org.jb2011.lnf. ...

我确信我当时测过上面给你的代码里是可以编辑的。

你或许更新一下JDK试试?排除一下JDK的原因。我用的JDK是1.6.18
zjj7188 发表于 8 年前
引用:JackJiang 发表于 2016-04-19 09:26
老外的这个代码我调试过,可以执行的,你放到eclipse里去试试,或许能给你启发!

嗯,我用的是beautyeye-3.7,我直接把上面的代码复制过来运行了下,还是不能编辑的,把
org.jb2011.lnf.beautyeye.ch7_popup.TranslucentPopupFactory.java
   的第417行: “setFocusableWindowState(false);” 改为true 后就可以进行编辑
但是,这个文本框就失去不了焦点了,一直onFocus
JackJiang 发表于 8 年前
老外的这个代码我调试过,可以执行的,你放到eclipse里去试试,或许能给你启发!
JackJiang 发表于 8 年前
你可以把这段代码放到Eclipse里去执行看看,BeautyEye v3.7里解决了这个老外说的问题(你可以用v3.6对比一下,换个beautyeye的jar包就行)。
不知你描述的问题是否跟老外是一样的,你看看他的代码,或许能给你启发!


》BeautyEye的v3.7版解决的这个问题是老外提出来的,老外反馈的原话是:
The JTextField is not editable. If you remove beautyeye the field becomes editable”

》老外给出的出问题的代码如下:
public static void main(String[] s)
throws Exception 
{
BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.generalNoTranslucencyShadow;
org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();

final JPopupMenu popupTable = new JPopupMenu();
// find panel
JLabel findLabel = new JLabel("Filter for:");
findLabel.setPreferredSize(new Dimension(60, 20));
final JTextField findTextField = new JTextField();
findTextField.setColumns(10);

final JPanel container = new JPanel();
container.setBackground(new JMenuItem().getBackground()); // panel must have the same background with JMenuItems
container.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 0));
container.add(findLabel);
container.add(findTextField);

popupTable.add(container);

JButton button = new JButton("Action");

JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
buttonPanel.add(button);

JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(popupTable, BorderLayout.CENTER);
panel.add(buttonPanel, BorderLayout.SOUTH);

final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(900, 800);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.setVisible(true);

button.addActionListener
(
    new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            int x = (frame.getWidth() / 2);
            int y = (frame.getHeight() / 2);

            popupTable.show(frame, x, y);
        }
    }
);
}

返回顶部