所以我有一个包含 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/