Java Swing窗体的Nullpointerexception
我目前在使用IntelliJ创建的程序中遇到问题:
下面是返回java代码的登录系统的代码。lang.NullPointerException每次我“成功”登录时:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class LoginForm extends JFrame{
private JButton btnClear;
private JPanel mainLoginPanel;
private JButton btnLogin;
private JTextField txtUsername;
private JPasswordField pwdFieldPassword;
private JLabel lblUsername;
private JLabel lblPassword;
private JPanel txtUsernamePanel;
private JPanel pwdFieldPasswordPanel;
private JPanel buttonsPanel;
private JLabel lblTitle;
static loginAccount[] accountsDatabase = new loginAccount[2];
public static void main (String[] args)
{
LoginForm page = new LoginForm("Admin Login");
page.setVisible(true);
try {
Scanner input = new Scanner(new File("src//adminAccountsCreds.txt"));
input.useDelimiter("\n");
while(input.hasNext())
{
for(int i = 0; i < accountsDatabase.length;i++)
{
String tempName = input.nextLine();
String tempPassword = input.nextLine();
accountsDatabase[i] = new loginAccount(tempName, tempPassword);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public LoginForm(String title)
{
super(title);
txtUsername.setEditable(true);
pwdFieldPassword.setEditable(true);
setContentPane(mainLoginPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension( 400, 400));
pack();
this.setVisible(true);
btnClear.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
txtUsername.setText("");
pwdFieldPassword.setText("");
}
});
btnLogin.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AuthenticateUser(txtUsername.getText(), new String (pwdFieldPassword.getPassword()));
}
});
}
public void AuthenticateUser(String usernameInput, String passwordInput)
{
boolean matchNotFound = true;
for(int i = 0; i < accountsDatabase.length; i++) {
if (accountsDatabase[i].username.equals(usernameInput) && accountsDatabase[i].password.equals(passwordInput)){
matchNotFound = false;
break;
}
}
if(matchNotFound)
{
System.out.println("Match not found!");
}
else
{
setVisible(false);
dispose();
//System.out.println("Match found!");
StockDatabaseForm nextPage = new StockDatabaseForm("nextPage");
nextPage.setVisible(true);
}
}
private void createUIComponents() {
// TODO: place custom component creation code here
}
}
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class StockDatabaseForm extends JFrame{
private JPanel mainStockDBPanel;
private JTable dataTableStock;
private JPanel dataTablePanel;
private JPanel inputsPanel;
private JButton btnDelete;
private JButton btnAdd;
private JButton btnEdit;
private JPanel btnPanel;
private JPanel itemDataPanel;
private JLabel lblItemName;
private JTextField txtItemName;
private JLabel lblPrice;
private JTextField txtItemPrice;
static StockDatabase stockDatabaseInstance = new StockDatabase();
public static void main(String[] args)
{
StockDatabaseForm page = new StockDatabaseForm("Stock Database");
page.setVisible(true);
try {
Scanner input = new Scanner(new File("src//testStockData.txt"));
input.useDelimiter("\n");
while(input.hasNext())
{
for(int i = 0; i < stockDatabaseInstance.itemsInStock.length;i++)
{
String tempName = input.nextLine();
float tempPrice = Float.valueOf(input.nextLine());
stockDatabaseInstance.itemsInStock[i] = new StockItem(tempName, tempPrice);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public StockDatabaseForm(String title)
{
super(title);
setContentPane(mainStockDBPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setPreferredSize(new Dimension( 500, 500));
pack();
this.setVisible(true);
}
private void createUIComponents() {
// TODO: place custom component creation code here
}
}
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "javax.swing.AbstractButton.setText(String)" because "<local8>" is null
at StockDatabaseForm.$$$setupUI$$$(StockDatabaseForm.java)
at StockDatabaseForm.<init>(StockDatabaseForm.java:51)
at LoginForm.AuthenticateUser(LoginForm.java:94)
at LoginForm$2.actionPerformed(LoginForm.java:69)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
at java.desktop/java.awt.Component.processEvent(Component.java:6379)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
我一直在试图修复这个错误。有没有人可以浏览一下这段代码,看看他们是否可以建议如何修复这些错误,因为这些错误会影响项目的功能和我个人的心理健康(这是针对uni任务的)
# 1 楼答案
我想你需要把这个小组列出来。试试这个: