Event textchanged in Jtextfield

Discussion in 'Xây dựng ứng dụng desktop standalone' started by gorkiit, 5/1/13.

  1. gorkiit Member

    Các bác giúp e 1 chút. Ý của em là bắt ự kiện textchanged của textbox Gianhap va Soluong => tự động tính và setText cho textboxTongtien. Em dùng event inputmethodTextchanged nhưng nó k làm việc. Vậy nên e dùng event này. Nhưng vấn đề là cái này nó bắt cả sự kiện click chuột => khi chuột click vào ô Gianhap hay ô Soluong để nhập giá trị thì nó bắt luôn sự kiện ấy và bắn ra Ex numberformat. Các bác làm ơn giúp e giải quyết vấn đề này
    PHP:
    private void txtGianhapCaretUpdate(javax.swing.event.CaretEvent evt) {
            
    // TODO add your handling code here:
            
    int soluong 0;
            
    int gianhap 0;
            
    String gn txtGianhap.getText();
            
    String sl txtSoluong.getText();

            if (
    gn == null || "".equals(gn) && sl == null || "".equals(sl)) {
                
    txtTongtien.setText("0");
            }
            else{
                if (!
    Validation.isInt(sl)) {/* kiểm tra nhập vào từ người dùng*/
                    
    txtSoluong.setText("0");
                    
    JOptionPane.showMessageDialog(null"Loi nhap so""Loi"JOptionPane.ERROR_MESSAGE);//Bắt lỗi nhập số
                
    }
                else if(!
    Validation.isInt(gn)){ /* kiểm tra nhập vào từ người dùng*/
                    
    txtGianhap.setText("0");
                    
    JOptionPane.showMessageDialog(null"Loi nhap so""Loi"JOptionPane.ERROR_MESSAGE);//Bắt lỗi nhập số
                
    }

                else{
                    
    gianhap = (int) Double.parseDouble(gn);
                    
    soluong = (int) Double.parseDouble(sl);
                    
    txtTongtien.setText(String.valueOf(gianhap soluong));
                }
            }
        }            
  2. thanhlikes09bkdn Active Member

    Code:
    import java.awt.GridLayout;
    import java.awt.HeadlessException;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.naming.ldap.Rdn;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JRadioButton;
    import javax.swing.JTextField;
    import javax.swing.event.CaretEvent;
    import javax.swing.event.CaretListener;
    
    //============================================================================
    // Name        : TFDemo.java
    // Author      : thanhlikes09
    // Version    :
    // Copyright  : Your copyright notice
    // Description : Hello World in Java, Ansi-style
    // Date    Create : Jan 5, 2013
    //============================================================================
    
    public class TFDemo extends JFrame implements CaretListener {
    
        private JTextField tfN1, tfN2, tfResult;
    
        public TFDemo() throws HeadlessException {
            super();
            // TODO Auto-generated constructor stub
            setSize(400, 100);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setLocationRelativeTo(null);
            setLayout(new GridLayout(3, 2));
            tfN1 = new JTextField();
            tfN2 = new JTextField();
            tfResult = new JTextField();
            tfResult.setEditable(false);
            add(new JLabel("N1"));
            add(tfN1);
            add(new JLabel("N2"));
            add(tfN2);
            add(new JLabel("Result"));
            add(tfResult);
    
            tfN1.addCaretListener(this);
            tfN2.addCaretListener(this);
            setVisible(true);
        }
    
        public static void main(String[] args) {
            new TFDemo();
    
        }
    
        @Override
        public void caretUpdate(CaretEvent e) {
            // TODO Auto-generated method stub
            System.out.println("thanh");
            if (e.getSource() == tfN1 || e.getSource() == tfN2) {
                if (!tfN1.getText().isEmpty() && !tfN2.getText().isEmpty()) {
                    tfResult.setText(Float.toString(Float.parseFloat(tfN1.getText())
                            + Float.parseFloat(tfN2.getText())));
                }
            }
        }
    }
    
    Có đúng ý bạn không! Mình code trên eclipse! Còn nếu bạn muốn enter để nó thực hiện thì ActionListener nhé bạn!
    gorkiit likes this.
  3. gorkiit Member

    Cảm ơn cậu đúng rồi. Cho mình hỏi là có cách nào chỉ được phép nhập mình số vào textField k nhỉ
  4. thanhlikes09bkdn Active Member

Chia sẻ trang này



Ve may bay di Ha Noi | Ve may bay di Vinh | Ve may bay di Hue | Ve may bay di Da Nang | Ve may bay di Nha Trang | Ve may bay di Da Lat | Ve may bay di Phu Quoc | Ve may bay di Sai Gon | Ve may bay di TPHCM | Ve may bay di Buon Me Thuot | Ve may bay di Hai Phong | Ve may bay di Dong Hoi | Ve may bay Vietjet Air | Phong ve may bay Vietjet Air | Ve may bay Vietnam Airlines | Phong ve may bay Vietnam Airlines | Ve may bay Vietnam Airlines | Ve may bay gia re | Ve may bay | Mua ve may bay | Jetstar | Vietnam Airlines | Air Asia | Tiger Airways | Ve may bay di My | Vietjet Air | Ve may bay di Ha Noi | Ve may bay di Da Nang | Ve may bay di Hai Phong | Ve may bay di Vinh