Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Java DocumentListener problemim


Mithr

Öne çıkan mesajlar

Swing üzerinde çalışıyorum.
Jtextfield'ım var bir tane. Buna document listener ekledim.
Document listenerin bildigimiz gibi 3 methodu var

removeUpdate
changeUpdate
insertUpdate.

Ben insertUpdate üzerinde çalışıyorum, örneğin girilen char 'a' ise, jText.setText("asdasd" ); tarzında birşey yapmasını istiyorum.
Fakat documentlistener methodları içinde, jtext'e müdahale edilmiyormuş, edemiyorum da...
Farklı bir class yaratıp timer ekleyip kontrol edip istedigim şeyi yapabiliyorum fakat processorden yiyor o da, insertUpdate methodunda yapabilsem mükemmel olur.

Nasıl yapabilirim? Yardımcı olabilecek varmı? Tşkkrler.
Link to comment
Sosyal ağlarda paylaş

DocumentListener nedir bilmiyorum ama Swing widget'larına ulaşımların hepsinin event-dispatching thread denen bir thread içinde yapılması gerekiyor. Bunu yapmak için de SwingUtilities class'ı içinde invokeLater ve invokeAndWait adında iki metod var.

Detaylar için: http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html#event_dispatching
Link to comment
Sosyal ağlarda paylaş

O örnekte birden fazla text field, text area vs var. Sol üsttekine bir şey yazınca diğer alanlarda feedback veriyor.

Mithr benzer bir şeyi sadece tek text field kullanarak yapmak istiyor sanırım. Sorun ise DocumentListener ile aynı text field üzerinde değişiklik yapamaması anladığım kadarıyla.

Edit: Dediğin gibi ActionListener sadece enter için event üretiyor. Ama KeyListener ile diğer tuşlara da bakabiliyorsun. Örnek, bir tuşa basınca aynı harften iki tane yazıyor:


import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JTextField;


public class TextFieldExample extends JFrame {

private JTextField textField = new JTextField();

public TextFieldExample() {
super("Hello Pati!");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(textField);

textField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
textField.setText(textField.getText() + arg0.getKeyChar());
}

@Override
public void keyReleased(KeyEvent arg0) {
}

@Override
public void keyPressed(KeyEvent arg0) {

}
});
}

public static void main(String ... args) {
TextFieldExample frame = new TextFieldExample();
frame.setVisible(true);
frame.pack();
}

}


Tabi bu da tam istediğin olmayabilir. DocumentListener kadar güçlü değil çünkü. Mesela text field klavye ile değil de, programın başka bir yerinde değiştirilse haberin olmayacak. Ya da mesela biri drag & drop ile text field içine bir yazı kopyalasa haberin olmayacak vs..
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...