Swing未写字段警告(Java)



我已经安装了findBugs,并在if语句的actionPerformed方法中获得错误警告

if (source == this.temp)

警告说有一个未写的字段。程序仍在编译,但当我点击名为temp的按钮时挂起。

我以为我已经正确初始化了那个字段。谁能告诉我哪里出错了?由于

import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane; 
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import components.simplereader.SimpleReader;
import components.simplereader.SimpleReader1L;
/**
 * View class.
 *
 * @author Redacted
 */
@SuppressWarnings("serial")
public final class PasswordManagerView1 extends JFrame
    implements PasswordManagerView {
private JButton temp;
/**
 * controller.
 */
private PasswordManagerController controller;
/**
 * Jpanel.
 */
/**
 * Useful constants.
 */
private Dimension maxSize;
private JTabbedPane tabbedPane;
/**
 * Constructor.
 */
public PasswordManagerView1() {
    super("Password Manager");
    JTabbedPane tabbedPane = new JTabbedPane();
    //Initial JPanel creation
    tabbedPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    //tabbedPane.setLayout(new BorderLayout(0, 0));
    this.maxSize = new Dimension(700, 300);
    tabbedPane.setPreferredSize(this.maxSize);
    this.getContentPane().add(tabbedPane);
    //Initial JTabbedPane creation
    //Tab creation
    JComponent panel1 = this.makeTextPanel("temp1");
    ImageIcon icon = new ImageIcon("lock-icon.png");
    tabbedPane.addTab("Add Password", icon, panel1,
            "Adds a password to the vault");
    JComponent panel2 = this.makeTextPanel("temp2");
    tabbedPane.addTab("Delete Password", icon, panel2,
            "Deletes a password from the vault");
    JComponent panel3 = this.makeTextPanel("temp3");
    tabbedPane.addTab("Password Vault", icon, panel3,
            "View the passwords in the vault");
    JComponent panel4 = this.makeInfoPanel();
    tabbedPane.addTab("Info/Settings", icon, panel4,
            "View settings and program info");
    JButton temp = new JButton("Hey");
    panel1.add(temp);
    temp.addActionListener(this);
    //Pack up
    this.pack();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
}
private JComponent makeTextPanel(String text) {
    JPanel panel = new JPanel();
    JLabel filler = new JLabel(text);
    filler.setHorizontalAlignment(JLabel.CENTER);
    panel.setLayout(new GridLayout(1, 1));
    panel.add(filler);
    return panel;
}
private JComponent makeInfoPanel() {
    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(1, 1));
    StringBuilder toPrint = new StringBuilder();
    SimpleReader in = new SimpleReader1L("data/Notice.txt");
    while (!in.atEOS()) {
        toPrint.append(in.nextLine() + "n");
    }
    String toPrintString = toPrint.toString();
    JTextArea noticeText = new JTextArea(toPrintString);
    noticeText.setEditable(false);
    JScrollPane noticeTextScroll = new JScrollPane(noticeText);
    panel.add(noticeTextScroll);
    in.close();
    return panel;
}
@Override
public void registerObserver(PasswordManagerController controller) {
    this.controller = controller;
}
@Override
public void actionPerformed(ActionEvent event) {
    //Wait cursor
    this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    //What button was pressed
    Object source = event.getSource();
    if (source == this.temp) {
        this.controller.processTestEvent();
    }
}

在构造函数中有这样一段代码:

JButton temp = new JButton("Hey");
panel1.add(temp);

它定义了一个局部temp变量,该变量遮蔽了成员——删除JButton以便它使用类成员:

temp = new JButton("Hey");
panel1.add(temp);

最新更新