簡體   English   中英

如何在NetBeans GUI Builder中向多個組件添加相同的偵聽器

[英]How do I add the same listener to multiple components in the NetBeans GUI Builder

我正在使用NetBeans GUI Builder來創建一個小應用程序。 首先,我要說的是我可以手動編碼所有內容並立即解決這個問題。 但是,我想學習如何使用GUI Builder。 這是我的警告,所有不使用它的建議都會得到一次投票。

話雖如此,我目前的情況是我有幾個JFormattedTextField ,我想在用戶輸入格式無效的數據時顯示錯誤信息。 每種情況下的邏輯都是相同的。 唯一的區別是根據預期的確切格式顯示不同的錯誤消息(即四位數年份,正整數等)。 我想簡單地編寫一個可以為每個文本字段重用的偵聽器。 我為第一個文本框寫了以下方法:

private void formattedTextFieldFocustLost(java.awt.event.FocusEvent evt) {
    JFormattedTextField source = (JFormattedTextField)evt.getComponent();

    if (!source.isEditValid()) {
        // TODO: Need a better error message.
        JOptionPane.showMessageDialog(this, "Invalid input.", "Input Error", JOptionPane.ERROR_MESSAGE);
        source.requestFocusInWindow();
    }
}

方法簽名由NetBeans生成,並從生成的匿名內部類調用,該類擴展了FocusAdapter 現在,當我轉到NetBeans中的“設計”視圖並單擊另一個組件的focusLost事件的組合框時,此方法名稱不會顯示。

我還嘗試創建一個擴展FocusAdapter的命名內部類。 這也不會出現在事件處理程序組合框中。

如何為我的所有文本字段創建單個方法?

如果您已經編寫了處理程序,請說btnActionPerformed,復制名稱。

在設計視圖中,右鍵單擊要附加處理程序的組件>“屬性”>“事件”>“...”按鈕>“添加”>將現有處理程序名稱粘貼到空白字段中,然后單擊“確定”。

(Netbeans 7.3.1)

創建自己的方法,例如validate():

private void validate(JFormattedTextField source) {
    if (!source.isEditValid()) {
        // TODO: Need a better error message.
        JOptionPane.showMessageDialog(this, "Invalid input.", "Input Error", JOptionPane.ERROR_MESSAGE);
        source.requestFocusInWindow();
    }
}

然后從您通過GUI編輯器定義的各個偵聽器中調用此方法:

private void formattedTextFieldFocustLost(java.awt.event.FocusEvent evt) {
    JFormattedTextField source = (JFormattedTextField)evt.getComponent();
    validate(source);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM