kle*_*tra 10
从技术上讲,答案是使用PropertyChangeListener并监听"text"属性的更改,例如
PropertyChangeListener l = new PropertyChangeListener() {
public void propertyChanged(PropertyChangeEvent e) {
// do stuff here
}
};
label.addPropertyChangeListener("text", l);
Run Code Online (Sandbox Code Playgroud)
技术上并非如此:重新访问整体设计并绑定到触发标签更改的原始来源是值得的
恕我直言,您无法在 JLabels textchange 上获取事件。但您可以使用 JTextField 而不是 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");
}
});
Run Code Online (Sandbox Code Playgroud)
注意:无论文本如何更改,都会触发此事件;以编程方式通过 TextField 上的“setText()”或(如果您没有“setEditable(false)”)通过剪贴板剪切/粘贴,或由用户直接在 UI 上的字段中键入。
线路:
textFieldLabel.setEditable(false);
textFieldLabel.setOpaque(true);
textFieldLabel.setBorder(null);
Run Code Online (Sandbox Code Playgroud)
用于使 JTextField 看起来像 JLabel。
归档时间: |
|
查看次数: |
9075 次 |
最近记录: |