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


Öne çıkan mesajlar

Mesaj tarihi:
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.
Mesaj tarihi:
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
Mesaj tarihi:
invokelar cevabım değil malesef, denemiştim fakat olmuyor.sanırım bir nevi loopa giriyor o methodun içinden bir şekilde textfield'in içine yeni karakter ekledigimde.
Mesaj tarihi:
actionlistener ancak return(enter) tuşuna basıldığında response veriyor (yani ben denedigimde öyleydi), bana textfield'ın içeriği her değiştiğinde düşünüp taşınan bir listener lazım :d
Mesaj tarihi:
http://java.sun.com/docs/books/tutorial/uiswing/events/documentlistener.html

şöle bişiyi inceledim, istediğin şey bu sanırım. ama içinden seçip açıklayamadım, belki görmemişsindir, bir incele derim.
Mesaj tarihi:
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..
Mesaj tarihi:
Sanırım,

textField objen her tek char entry girildiğin de bundan haberdar olup, buna göre birşeyler yapmak istiyorsun?

Swing şart mı? front end ini web kullanıp ajax le çok kolay halledebilirsin bu işi.

Edit: Swing haters honor member :)
×
×
  • Yeni Oluştur...