首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Swing 路由表查詢界面:按鈕事件監聽與文本框數據綁定完整實現

     編輯:程式設計綜合問答

核心缺失:未註冊 ActionListener

代碼中 `chaxun` 按鈕未添加監聽器,`actionPerformed` 定義在框架類但未綁定。

修正步驟

  1. 類實現 `ActionListener` 或創建匿名內部類。
  2. 構造函數中 `chaxun.addActionListener(this);` 或 `new ActionListener() {...}`。
  3. 事件中讀取 4 個 `JTextField` 文本,解析 IP 段,執行路由匹配邏輯。
  4. 結果通過 `shuchu[0].setText(...)`、`shuchu[1].setText(...)` 顯示。< /li>

完整可運行修正版 (關鍵片段)

public class RouterSimulator extends JFrame implements ActionListener {
    // ... 組件聲明 ...
    JTextField[] inputFields = new JTextField[4];
    JTextField[] outputFields = new JTextField[2];
    JButton btnQuery;

    public RouterSimulator() {
        // ... 佈局代碼 ...
        btnQuery = new JButton("查詢");
        btnQuery.addActionListener(this); // 關鍵:註冊監聽
        // ... 添加到面板 ...
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == btnQuery) {
            try {
                int[] ip = new int[4];
                for (int i = 0; i < 4; i++) {
                    ip[i] = Integer.parseInt(inputFields[i].getText().trim());
                }
                String result = routeLookup(ip); // 核心算法
                outputFields[0].setText(result); // 顯示結果
                outputFields[1].setText("匹配成功");
            } catch (NumberFormatException ex) {
                outputFields[0].setText("輸入格式錯誤");
            }
        }
    }

    private String routeLookup(int[] ip) {
        // 實現題目路由匹配邏輯 (掩碼 AND 比較)
        // 返回 "接口0" / "接口1" / "R2" / "錯誤"
        return "接口0"; // 示例
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new RouterSimulator().setVisible(true));
    }
}

關鍵補充

  • 主線程啟動 UI:`SwingUtilities.invokeLater` 保證線程安全。
  • 輸入驗證:`NumberFormatException` 捕獲非數字輸入。
  • 路由算法:將 IP 與掩碼按位與 (`&`),比較網絡地址。< /li>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved