2010-10-15 32 views
9

Làm cách nào tôi có thể thử lại sự kiện trên nhãn JLabel khi thay đổi văn bản bên trong ??Nhãn trên sự kiện thay đổi văn bản

Tôi có nhãn JLabel và khi thay đổi văn bản bên trong, tôi phải cập nhật trường khác.

+1

Tốt hơn là nên cập nhật cả hai trường cùng một lúc, từ bất kỳ sự kiện nào gây ra thay đổi đầu tiên? –

+0

Tôi đặt văn bản i jlabel1 bằng cách nhấp vào nút và tùy thuộc vào những gì tôi đã chọn Tôi phải đặt một văn bản khác i jLabel2 – Giovanni

Trả lời

2

IMHO bạn không thể nhận được sự kiện trên văn bản JLabels. Nhưng bạn có thể sử dụng một JTextField thay vì một JLabel:

private JTextField textFieldLabel = new JTextField(); 
textFieldLabel.setEditable(false); 
textFieldLabel.setOpaque(true); 
textFieldLabel.setBorder(null); 

textFieldLabel.getDocument().addDocumentListener(new DocumentListener() { 

    public void removeUpdate(DocumentEvent e) { 
     System.out.println("removeUpdate"); 
    } 

    public void insertUpdate(DocumentEvent e) { 
     System.out.println("insertUpdate"); 
    } 

    public void changedUpdate(DocumentEvent e) { 
     System.out.println("changedUpdate"); 
    } 
}); 

Lưu ý: sự kiện này là bắn bất kể có bao văn bản được thay đổi; programatically thông qua "setText()" trên TextField hoặc (nếu bạn không "setEditable (false)") thông qua clipboard cut/paste, hoặc bởi người dùng gõ trực tiếp vào trường trên giao diện người dùng.

Các dòng:

textFieldLabel.setEditable(false); 
textFieldLabel.setOpaque(true); 
textFieldLabel.setBorder(null); 

được sử dụng để làm cho JTextField trông giống như một JLabel.

+0

câu trả lời này là sai (phần liên quan đến người nghe có sẵn cho JLabel) – kleopatra

10

techically, câu trả lời là sử dụng một PropertyChangeListener và lắng nghe những thay đổi của "văn bản" bất động sản, một cái gì đó giống như

PropertyChangeListener l = new PropertyChangeListener() { 
     public void propertyChanged(PropertyChangeEvent e) { 
      // do stuff here 
     } 
}; 
label.addPropertyChangeListener("text", l); 

không quá kỹ thuật: có thể là giá trị để tái tham quan thiết kế tổng thể và liên kết với nguồn gốc đã kích hoạt thay đổi trong nhãn

Các vấn đề liên quan