Trong ứng dụng Swing, tôi có một số bảng phụ, mỗi bảng nghe một JSlider
. Bảng cha mẹ xung quanh cũng lắng nghe tất cả các bảng phụ. Để có kết quả nhất quán trong ví dụ bên dưới, tôi phải thêm phụ huynh trước và rồi người nghe địa phương. Điều này có ý nghĩa, theo thứ tự được quy định trong EventListenerList
và được giải thích trong số article này. Tôi có thể dựa vào thứ tự đó hay tôi nên sắp xếp để gửi một sự kiện khác?Thứ tự kích hoạt EventListenerList
class SubPanel extends JPanel implements ChangeListener {
private final JSlider slider = new JSlider();
private final JLabel label = new JLabel();
private final String name;
private float value;
public SubPanel(String name, float value, ChangeListener parent) {
this.name = name;
this.value = value;
...
slider.addChangeListener(parent);
slider.addChangeListener(this);
}
...
}
Phụ lục: thảo luận trong EventListenerList
dường như là lời khuyên thực hiện chứ không phải đảm bảo. Cách tiếp cận chuỗi được đề xuất bởi pstanton thực thi đúng thứ tự chính xác hơn. Ví dụ: ChangeListener
của SubPanel
chỉ có thể chuyển tiếp sự kiện cho phụ huynh.
@Override
public void stateChanged(ChangeEvent e) {
...
parent.stateChanged(e);
}
Câu hỏi và thảo luận thú vị! 1+ –
Ứng dụng ['Converter'] (http://docs.oracle.com/javase/tutorial/uiswing/components/panel.html) bao gồm một ví dụ trong' ConverterRangeModel'. – trashgod
Tôi vừa đăng bài của bạn trong khi 'googling', muốn giải thích chi tiết. xin vui lòng làm cho số lượng bài viết, và chỉ cho tôi ra nếu bất cứ điều gì tôi đã mô tả có thể là sai! – Sage