2016-08-15 52 views
0

我已經安裝的FindBugs和if語句搖擺不成文場警告(JAVA)

if (source == this.temp) 

警告說,有一個不成文的領域得到actionPerformed方法的錯誤警告。該程序仍然編譯,但當我點擊名爲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(); 
    } 
} 

回答

1

在你有這段代碼構造:

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

它定義了一個局部temp變量,陰影成員 - 刪除JButton,以便它使用類成員:

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

啊這麼簡單的錯誤啊。謝謝。在你看來,我能問一下這段代碼是否看起來很體面? – frillybob

+2

@frillybob:這是更多的代碼審查問題:http://codereview.stackexchange.com/ - 但國際海事組織的號碼是一個很大的禁忌,評論不會增加太多的代碼(儘管它是好的,如果你正在學習),並且所有這些代碼組(例如標籤創建)都可以使用它們自己的功能。 – mszymborski

+2

@mszymborski僅供參考[codereview.se]在幾分鐘內關閉的任何問題提及了一個錯誤或某種不正常工作的問題。但是,一旦它有效,它應該發佈在CR上,以獲取關於代碼的任何/所有方面的反饋。 –