java - 未找到变量,即使它位于上面的类中

标签 java variables if-statement actionlistener

所以我有一个包含 JButton 的 GUI 类,然后我有一个 actionPerformed 类,下面显示了按下按钮时会发生什么。现在,当我执行 if(e.getSource()==search) 时,搜索会显示为红色,并表示在类 GUI 中找不到该变量。尽管它就在那个类中。

我需要一些帮助。

package crimedata;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;


class GUI extends JFrame implements ActionListener {

    Connection con = null;

    GUI() {
        JPanel p = new JPanel();
        JFrame f = new JFrame("Crime Data");

        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(600, 600);

        f.setResizable(true);
        f.setLocationRelativeTo(null);
        GridBagConstraints gbc = new GridBagConstraints();
        getContentPane().setLayout(new GridBagLayout());

        gbc.insets = new Insets(5, 5, 5, 5);

        JLabel LongLabel = new JLabel("Enter Longitude here");
        LongLabel.setForeground(Color.gray);
        gbc.gridx = 0;
        gbc.gridy = 1;
        getContentPane().add(LongLabel, gbc);
        JTextField LongText = new JTextField(20);
        getContentPane().add(LongText, gbc);

        JLabel LatLabel = new JLabel("Enter Latitude here");
        LatLabel.setForeground(Color.gray);
        gbc.gridx = 0;
        gbc.gridy = 2;
        getContentPane().add(LatLabel, gbc);
        JTextField LatText = new JTextField(20);
        getContentPane().add(LatText, gbc);

        JLabel LSOANameLabel = new JLabel("Enter LSOA Name here");
        LSOANameLabel.setForeground(Color.gray);
        gbc.gridx = 0;
        gbc.gridy = 3;
        getContentPane().add(LSOANameLabel, gbc);
        JTextField LSOANameText = new JTextField(20);
        getContentPane().add(LSOANameText, gbc);

        JButton search = new JButton("Search");
        gbc.gridx = 0;
        gbc.gridy = -1;
        getContentPane().add(search, gbc);
        search.addActionListener(this);

        JButton exportnoid = new JButton("Export No Crime ID");
        gbc.gridx = 0;
        gbc.gridy = -1;
        getContentPane().add(exportnoid, gbc);

        JButton exportdup = new JButton("Export Duplicate ID");
        gbc.gridx = 0;
        gbc.gridy = -1;
        getContentPane().add(exportdup, gbc);

        f.add(getContentPane());
        pack();
        f.setVisible(true);
    }

   @Override
   public void actionPerformed(ActionEvent e) {
      if(e.getSource()==search){
          System.out.println("");
      } else {

      }
   }

}

class GUIHandler {
    public static void main(String[] args) {
        GUI a = new GUI();
    }
}

最佳答案

search 变量不是实例变量,它的作用域仅限于构造函数,因此您不能在构造函数之外使用它。

Connection con = null;之后声明JButton search变量。

另请注意,actionPerformed 方法中有空的“else”语句。

关于java - 未找到变量,即使它位于上面的类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50216226/

相关文章:

java - 对 double 使用字符串格式

java - 构建具有安全性的 Java 桌面应用程序的最佳方式

JavaScript 检查变量是否存在(已定义/初始化)

php - 在类中访问 session 变量

javascript - 循环时更改 Javascript 增量的速度?

c++ - 有没有更好的方法可以编写这个程序?

Java/Kotlin JSON 解析改进

java - 用空字符串装饰器替换 null

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

有人能告诉我为什么我的 if/else 语句不起作用吗?