JTextField가있는 경우 JTextPane의 텍스트를 프로그래밍 방식으로 선택할 수없는 이유는 무엇입니까? 내가 생각하는 초점과 관련이있다. 고마워.JTextPane과 JTextField 사이의 텍스트 선택 충돌
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.beans.PropertyChangeListener;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.InputMap;
import javax.swing.JComponent;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.KeyStroke;
public class align extends JFrame {
private align() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addPane(this, "one");
pack();
setVisible(true);
}
public static void main(String[] args) {
align t = new align();
}
private void addPane(JFrame frame, String name) {
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout(FlowLayout.LEFT));
// if the next line is disabled, then the text is JTextPane is correctly highlighted.,,
panel.add(makeField("line1"));
JTextPane p = new JTextPane();
p.setText("abcdef");
p.setSelectionStart(2);
p.setSelectionEnd(4);
p.setFocusable(true);
p.requestFocus();
p.requestDefaultFocus();
panel.add(p);
frame.getContentPane().add(panel);
}
private JComponent makeField(String name) {
JTextField textArea = new JTextField();
textArea.setText(name);
textArea.setEditable(false);
return textArea;
}
}
편집 :
는 프레임이 구축 된 후 키 이벤트를 발사하여 선택한 텍스트를 표시하는 알았어요. 더 나은 (더 긴) 솔루션은 클립 보드를 Ctrl-C에서 업데이트 된 상태로 유지하는 사용자 정의 형광펜 및 DocumentListener와 함께 읽기 전용 텍스트 패널을 갖는 것입니다.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(
new KeyEvent(textPane, KeyEvent.KEY_PRESSED, System.currentTimeMillis(), 0, KeyEvent.VK_TAB));
'JComponent.requestDefaultFocus()'와 같이 사용되지 않는 메소드를 사용하지 마십시오. –
Java 명명 규칙을 배우고 사용하십시오. – kleopatra