Java Cursor(İmleç) Pozisyonunu Güncelleme

29-03-2014
setCaretPosition() ve requestFocus() metodları kullanılarak, JTextArea, JTextField gibi Java Swing elemanları ile yapılan işlemlerde cursor(imlec)'un dilediğimiz yerde olmasını sağlar. Bu özellik sayesinde örneğin içeriğe göre arama yapan bir uygulama geliştirirken imlecin bulunan kelimenin üzerinde olmasını sağlayabiliriz.

Örnek:

public class TestCursor extends JFrame{
    private JTextArea txtContent;
    private JTextField txtSearch;
    public TestCursor(){
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        txtContent= new JTextArea(30, 100);//30 satir 100 sutunlu bir text area olusturulur
        txtContent.setLineWrap(true);
        txtContent.setTabSize(2);//Tab tusunun kac karakter olacagi belirtildi
        txtContent.setMargin(new Insets(10, 10, 10, 10)); //tum kenarlardan 10px lik bosluk birakilir
 
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setViewportView(txtContent);
 
        JPanel pnlSouth=new JPanel();
        pnlSouth.setBorder(new LineBorder(new Color(0,0,0)));
        JButton btnSearch=new JButton("Ara");
        btnSearch.addActionListener(new SearchContent());
        txtSearch=new JTextField(20);
 
        pnlSouth.add(txtSearch);
        pnlSouth.add(btnSearch);
 
        add(pnlSouth, BorderLayout.SOUTH);
        add(scrollPane,BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    private class SearchContent implements ActionListener{
 
        @Override
        public void actionPerformed(ActionEvent e) {
            String toBeSearched=txtSearch.getText();
            int caretPosition=txtContent.getText().indexOf(toBeSearched);
            txtContent.setCaretPosition(caretPosition);
            //imlecin guncellenen caret pozisyonunda gozukmesini saglar.
            //Bu metod kullanilmasaydi, caret pozisyonu guncellenmesine ragmen imlec gozukmezdi
            txtContent.requestFocus();
        }
    }
    public static void main(String[] args) {
        new TestCursor();
    }
}


Bu uygulama calistirildigi zaman JTextField içeriğinde yer alan kelimeler arasında arama yapılması sağlanır. Bulunan kelimenin başlangıcında imleç gözükmüş olur.

© 2019 Tüm Hakları Saklıdır. Codesenior.COM