Mist, das hätte ich nicht gedacht... Es ist nicht möglich, etwas zu selektieren und dabei den Caret auf den Anfang der Selektion zu setzen ...
[CODE=java]import javax.swing.*;
public class SelectDemo {
public enum SelectCaretBehavior {
DO_NOT_MOVE_CARET,
MOVE_CARET_TO_SELECT_START,
MOVE_CARET_TO_SELECT_END
}
private final JTextArea textArea1 = new JTextArea("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed d");
public SelectDemo() {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("SelectDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
textArea1.setLineWrap(true);
frame.add(new JScrollPane(textArea1));
});
}
public void selectText(int start, int end, SelectCaretBehavior caretBehavior) {
switch (caretBehavior) {
case DO_NOT_MOVE_CARET:
break;
case MOVE_CARET_TO_SELECT_START:
textArea1.setCaretPosition(start);
break;
case MOVE_CARET_TO_SELECT_END:
textArea1.setCaretPosition(end);
break;
}
textArea1.select(start, end);
}
public static void main(String[] args) {
new SelectDemo().selectText(5, 10, SelectCaretBehavior.MOVE_CARET_TO_SELECT_START);
}
}
[/CODE]
Leider doch ein Bug