如果我拖动&将选定的文本从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?
答案 0 :(得分:0)
这里有一个更清晰的例子来展示一下,怎么做:
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);
有人有另一种更好的解决方案吗?