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