меня установлено FindBugs и получить предупреждение об ошибке в методе actionPerformed в случае заявленияКачелей предупреждение неписаного поля (Java)
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();
}
}
Ах такая простая ошибка. Спасибо. Могу ли я спросить, на ваш взгляд, если этот код выглядит прилично стильным? – frillybob
@frillybob: это больше вопрос для обзора кода: http://codereview.stackexchange.com/ - но номера IMO в именах являются большими, нет комментариев, комментарии не добавляют многого к тому, что делает код (хотя это ОК, если вы учитесь), и все эти группы кода (например, создание вкладок) могут использовать свои собственные функции. – mszymborski
@mszymborski FYI любой вопрос, который упоминает ошибку или что-то не работает так, как должно быть на [codereview.se] закрывается в течение нескольких минут. Но как только он работает, он должен быть размещен на CR для обратной связи по любым/всем аспектам кода. –