Не совсем понятно, где именно вы размещаете текстовую каретку (курсор). В приведенных ниже примерах методов предполагается, что курсор помещается на слово, содержащееся в тексте, отображаемом в текстовом компоненте Swing, например JTextField , JTextArea , JEditPane , et c, который доступен для просмотра в вашем собственном проекте приложения. Класс javax.swing.text.Utilities может получить нужные данные.
public static String getWordAtCaret(JTextComponent tc) {
String res = null;
try {
int caretPosition = tc.getCaretPosition();
int startIndex = Utilities.getWordStart(tc, caretPosition);
int endIndex = Utilities.getWordEnd(tc, caretPosition);
res = tc.getText(startIndex, endIndex - startIndex);
}
catch (BadLocationException ex) {
// Purposely Ignore so as to return null.
// Do what you want with the exception if you like.
}
return res;
}
public static String getNextWordFromCaret(JTextComponent tc) {
String res = null;
try {
int caretPosition = Utilities.getNextWord(tc, tc.getCaretPosition());
int startIndex = Utilities.getWordStart(tc, caretPosition);
int endIndex = Utilities.getWordEnd(tc, caretPosition);
res = tc.getText(startIndex, endIndex - startIndex);
}
catch (BadLocationException ex) {
// Purposely Ignore so as to return null.
// Do what you want with the exception if you like.
}
return res;
}
public static String getPreviousWordFromCaret(JTextComponent tc) {
String res = null;
try {
int caretPosition = Utilities.getPreviousWord(tc, tc.getCaretPosition()) - 2;
int startIndex = Utilities.getWordStart(tc, caretPosition);
int endIndex = Utilities.getWordEnd(tc, caretPosition);
res = tc.getText(startIndex, endIndex - startIndex);
}
catch (BadLocationException ex) {
// Purposely Ignore so as to return null.
// Do what you want with the exception if you like.
}
return res;
}
Примечание: Пунктуация, связанная с определенным словом, может дать неожиданные результаты, если используя методы getNextWordFromCaret () или getPreviousWordFromCaret (). Знаки препинания, такие как точка (. ), можно рассматривать как слово с помощью любого из этих методов, и поэтому необходимо уделить внимание их предотвращению.