JTextPanel 텍스트의 어느 부분이 선택되어 있는지 알고 싶습니다. JTextPane.getSelectionStart()
및 JTextPane.getSelectionEnd()
으로 전화를 걸려고했지만 항상 현재 캐럿 위치와 동일한 값을 반환합니다. 내 문제는 무엇입니까?JTextPane에서 선택하는 방법
현재 선택 사항을 얻는 코드 exapmle에 대해 감사 할 것입니다.
JTextPanel 텍스트의 어느 부분이 선택되어 있는지 알고 싶습니다. JTextPane.getSelectionStart()
및 JTextPane.getSelectionEnd()
으로 전화를 걸려고했지만 항상 현재 캐럿 위치와 동일한 값을 반환합니다. 내 문제는 무엇입니까?JTextPane에서 선택하는 방법
현재 선택 사항을 얻는 코드 exapmle에 대해 감사 할 것입니다.
나는 내 문제를 발견을 - 그 JTextPane의 내용을 변경 (그래서 선택을 떨어 뜨리고) 나는 keyTyped
이벤트를 도착하기 전에 한 사용자 정의 FocusListener
이었다.
어쨌든 모두에게 감사의 말을 전합니다.
public class TextPaneHighlightsDemo extends JFrame {
public TextPaneHighlightsDemo() {
super("SplashScreen demo");
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
final JTextPane textPane = new JTextPane();
add(textPane);
textPane.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
Highlight[] h = textPane.getHighlighter().getHighlights();
for(int i = 0; i < h.length; i++) {
System.out.println(h[i].getStartOffset());
System.out.println(h[i].getEndOffset());
}
}
});
}
public static void main (String args[]) {
TextPaneHighlightsDemo test = new TextPaneHighlightsDemo();
test.setVisible(true);
}
}
JTextComponent#getSelectedText()
을 살펴보십시오. JTextPane
의 인스턴스에서이 메서드를 호출하면 JTextPane
의 선택한 텍스트가 반환됩니다. 작은 예를 않았다
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class JavaApplication101 {
private JTextPane jTextPane;
private JButton btnGetSelectedText;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new JavaApplication101().createAndShowUI();
}
});
}
private void createAndShowUI() {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initComponents(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
private void initComponents(Container contentPane) {
jTextPane = new JTextPane();
btnGetSelectedText = new JButton("Get selected text");
btnGetSelectedText.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, jTextPane.getSelectedText());
}
});
contentPane.add(jTextPane, BorderLayout.NORTH);
contentPane.add(btnGetSelectedText, BorderLayout.SOUTH);
}
}
정확하고 간단한 대답입니다. – keuleJ
문서, Caret 및 viewToModel, 더 나은 도움을 위해 곧 [SSCCE] (http://sscce.org/) – mKorbel
[현재 선택 사항을 얻은 모든 코드 exapmle에 감사드립니다.] (http : // www.java2s.com/Tutorial/Java/0240__Swing/0240__JTextComponent.htm) – mKorbel