java - JTextField 在 JPopupMenu 中不可编辑

标签 java swing jtextfield jpopupmenu

当我在 JPopupMenu 中添加 JtextField 时,无法在显示弹出窗口时编辑文本。有人知道为什么吗? 这是一个代码示例:

 public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPopupMenu popup = new JPopupMenu();
        JTextField field = new JTextField("My text");
        popup.insert(field, 0);
        popup.setVisible(true);
    }

最佳答案

似乎对我来说没问题:

查看此示例(右键单击内容 Pane 中的任意位置以使弹出窗口可见:

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPopupMenu;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.PopupMenuEvent;
import javax.swing.event.PopupMenuListener;

public class Main {

    protected void initUI() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPopupMenu popup = new JPopupMenu();
        final JTextField field = new JTextField(20);
        field.setText("My text");
        popup.insert(field, 0);
        popup.addPopupMenuListener(new PopupMenuListener() {

            @Override
            public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
                SwingUtilities.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        field.requestFocusInWindow();
                        field.selectAll();
                    }
                });
            }

            @Override
            public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {

            }

            @Override
            public void popupMenuCanceled(PopupMenuEvent e) {

            }
        });
        ((JComponent) frame.getContentPane()).setComponentPopupMenu(popup);
        frame.setSize(300, 300);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Main().initUI();
            }
        });
    }
}

关于java - JTextField 在 JPopupMenu 中不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16276283/

相关文章:

java - 带 gui 的多线程 JavaChat

java - 如何使用 JTextFields 中的 If 语句

java - 事件发生时在 JFrame 中动态创建 JTextField

java - JTextField 和 HTML 标签

java - 从 maven-checkstyle-plugin 扫描中排除 *target* 目录

java - java Eclipse 内存不足异常

java - JProgressBar 无法从 ActionEvent 正确显示

java - 按 T​​ab 键时 Silk4J 对象映射编辑器中出现 NullPointerException

java - LibGDX ParticleEffectPool 问题

java - 线程 sleep 阻止我的 Swing 应用程序执行