Java 拖放;从jTextPane白色部件上的下拉幻灯片?

Java 拖放;从jTextPane白色部件上的下拉幻灯片?,java,swing,drag-and-drop,highlighting,jtextpane,Java,Swing,Drag And Drop,Highlighting,Jtextpane,如果我将所选文本从jTextPane拖放到另一个窗口,它就会工作 但是有没有一种方法可以通过直接从jTextPane区域的白色部分单击滑动来拖放jTextPane中的文本? (表示无需单击选定的突出显示文本) 或自动将鼠标指针移动到突出显示的文本? (但似乎是一种“不太干净”的解决方案:这是唯一的解决方案吗?) 我称之为“白色部分”的是jTextPane中没有突出显示文本的区域 简单的例子: /** * Basic Frame Settings

如果我将所选文本从jTextPane拖放到另一个窗口,它就会工作

但是有没有一种方法可以通过直接从jTextPane区域的白色部分单击滑动来拖放jTextPane中的文本? (表示无需单击选定的突出显示文本)

或自动将鼠标指针移动到突出显示的文本? (但似乎是一种“不太干净”的解决方案:这是唯一的解决方案吗?

我称之为“白色部分”的是jTextPane中没有突出显示文本的区域

简单的例子:

        /**
         * Basic Frame Settings
         */
            setBounds(100, 100, 450, 300);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            contentPane.setLayout(null);

            JTextPane textPane = new JTextPane();
            textPane.setBounds(143, 73, 143, 78);
            contentPane.add(textPane);

            textPane.setEditable(false);
            textPane.setText("hello");
            textPane.setDragEnabled(true);
所选文本可以是DnD


但是,如何从jTextPane的白色区域进行DnD呢?

这里有一个更清晰的示例来说明如何进行:

                boolean b = true;

                setBounds(100, 100, 450, 300);
                contentPane = new JPanel();
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(contentPane);
                contentPane.setLayout(null);

                final JTextPane textPane = new JTextPane();

                textPane.addMouseListener(new MouseAdapter() {

                    @Override
                    public void mousePressed(MouseEvent e) {

                        Robot robot = null;
                        try {
                            robot = new Robot();
                        } catch (AWTException ex) {
                            Logger.getLogger(Testframe.class.getName()).log(
                                    Level.SEVERE, null, ex);
                        }

                        // Set the Mouse X,Y Position
                        robot.mouseMove(textPane.getLocationOnScreen().x,
                                textPane.getLocationOnScreen().y);

                        if (b) {
                            // Simulate Mouse Double Click
                            robot.mousePress(InputEvent.BUTTON1_MASK);
                            robot.mousePress(InputEvent.BUTTON1_MASK);

                            b = false;

                        }



                    }

                });

                textPane.setBounds(143, 73, 143, 78);
                contentPane.add(textPane);

                textPane.setEditable(false);
                textPane.setText("hello");
                textPane.setDragEnabled(true);

有人有其他更好的解决方案吗???

DnD处理
选定的
文本。如果单击白色部分,所选内容将丢失,因此没有文本可拖动。谢谢您的回答:但是有没有办法让DnD从jTextPane区域的白色部分工作?:)你能提供SSCCE吗?我没有试过,但理论上你可以在点击文本区域的任意位置时自动选择所有文本,然后开始拖放。我搜索以使其对用户友好:)它强制为DnD单击所选文本:在所有情况下,它强制用户将鼠标指针移动到所选文本并单击并滑动:JTextPane空间是为自己保留的,似乎最好在整个JTextPane框上应用:)请,有人有自己的窍门吗?