java awt/swing 导出jar包时没有包含图片或本地文件内容,或者使用 类对象名.class.getResource时出现空指针异常的解决办法

第一个问题解决方法:

1.图片

需要由lblNewLabel.setIcon(new ImageIcon("src/network.png"));变为

lblNewLabel.setIcon(new ImageIcon(ns3.class.getResource("/resources/network.png")));(------ns3为对象名)

2.文本文件

需要由file_read = new File("src/wifi.cc");(------file_read为File类型)变为

file_read = WiFi.class.getResourceAsStream("/resources/wifi.cc");-------file_read为InputStream类型,WiFi为类名。

以上需要说明的是:resources为在src目录下面新建的一个文件夹,也就是包。将所有的图片或者文本文件放在resources文件下面,但是可能会发生空指针异常,即引出第二个问题。

第二个问题解决方法:

除了src目录下的resources文件夹中需要放置使用的图片或者文本文件,还需要在项目的bin目录下的resources文件下放入这些图片或者文本文件。需要指出的是,执行问题1中的语句之后bin目录会自动生成空的resources文件夹,需要再手动加入这些图片和文本文件。

发布了23 篇原创文章 · 获赞 14 · 访问量 1万+
展开阅读全文

java swing 登陆界面 空指针异常

01-05

我这里是一个简单的用户登录的程序,有两个Jpanel(pnlTop和主体部分),主体部分有user的JPanel,PassWord的JPanel。 其中,用户的密码、用户名信息都是存储在"information"路径下的"Customer.txt"文件里面的。 isCorrect()和checkInput()属于自定义的方法,用于检查输入和文件内的信息是否匹配。 ``` package UI; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import Controller.CustomerController; import Customer.Customer; import myComp.MyPicPanel; public class LoginForm extends BaseDialog{ private JPanel pnlMain = null; private JPanel pnlTop = null; private JPanel pnlUsername = null; private JPanel pnlPassword =null; private JPanel pnlButton = null; private JLabel lblUsername = null; private JLabel lblPassword= null; private JButton btnExit= null; private JButton btnLogin= null; private JTextField txtUsername= null; private JPasswordField txtPassword= null; public LoginForm(){ pnlTop = new MyPicPanel("images/2.jpg",400,90); pnlTop.setPreferredSize(new Dimension(400,90)); this.add(pnlTop, BorderLayout.NORTH); pnlMain = new JPanel(); pnlMain.setLayout(new BorderLayout()); pnlMain.setBorder(new EmptyBorder(5,0,0,0)); pnlMain.setBackground(Color.LIGHT_GRAY); this.add(pnlMain, BorderLayout.CENTER); initUI(); } public void initUI(){ //user name panel pnlUsername = new JPanel(); pnlUsername.setPreferredSize(new Dimension(this.getWidth(),60)); pnlUsername.setBorder(new EmptyBorder(10,0,0,0)); pnlMain.add(pnlUsername,BorderLayout.NORTH); //password panel pnlPassword = new JPanel(); pnlPassword.setPreferredSize(new Dimension(this.getWidth(),60)); pnlMain.add(pnlPassword,BorderLayout.CENTER); //button panel pnlButton = new JPanel(); pnlButton.setPreferredSize(new Dimension(this.getWidth(),60)); pnlMain.add(pnlButton,BorderLayout.SOUTH); addUsername(pnlUsername); addPassword(pnlPassword); addButton(pnlButton); } public ActionListener onclickListener = new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ JButton jb = (JButton)e.getSource(); if(jb.getActionCommand().equals("login")){ if(checkInput()){ if(isCorrect()){ Mainform main = new Mainform(); dispose(); } }else{ JOptionPane.showMessageDialog(null, "登录失败","Gourmet Coffee System", JOptionPane.ERROR_MESSAGE); } }else if(jb.getActionCommand().equals("exit")){ System.exit(0); } } }; private void addPassword(JPanel pnlPassword) { JLabel lblPassword = new JLabel("Password"); lblPassword.setFont(new Font("Microsoft YaHei UI",Font.BOLD,20)); pnlPassword.add(lblPassword); txtPassword = new JPasswordField(10); pnlPassword.add(txtPassword); } private void addUsername(JPanel pnlUsername) { JLabel lblUsername = new JLabel("Account"); lblUsername.setFont(new Font("Microsoft YaHei UI",Font.BOLD,20)); pnlUsername.add(lblUsername); txtUsername = new JTextField(10); pnlUsername.add(txtUsername); } //默认FlowLayout private void addButton(JPanel pnlButton) { btnLogin = new JButton("Login"); btnLogin.setActionCommand("login"); btnLogin.addActionListener(onclickListener); pnlButton.add(btnLogin); btnExit = new JButton("Exit"); btnExit.setActionCommand("exit"); btnExit.addActionListener(onclickListener); pnlButton.add(btnExit); } public boolean isCorrect(){ boolean flag = true; CustomerController userManager = new CustomerController(); ArrayList<Customer> customers = userManager.readObject("information","Customer.txt"); for(Customer customer: customers){ if(customer.getAccount().equals(txtUsername.getText().trim())) { if((String.valueOf(txtPassword.getPassword().equals(customer.getPassword()))) != null){ flag = true; } } } return flag; } public boolean checkInput(){ boolean flag = true; if(txtUsername.getText().trim().isEmpty()){ this.showMessage("账号不许为空!"); txtUsername.requestFocus(); flag = false; } if(String.valueOf(txtPassword.getPassword()).trim().isEmpty()){ this.showMessage("密码不许为空!"); txtPassword.requestFocus(); flag = false; } return flag; } public void showMessage(String msg){ JOptionPane.showMessageDialog(null, msg,this.getTitle(),JOptionPane.ERROR_MESSAGE); } } ``` 输出界面是这样: ![图片说明](https://img-ask.csdn.net/upload/201701/05/1483622006_749594.png) 但是每次输入用户名和密码(只要不是空,无论输入什么)都会报空指针异常。 这是异常片段: ``` Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at UI.Mainform.removeButton(Mainform.java:134) at UI.Mainform.<init>(Mainform.java:71) at UI.LoginForm$1.actionPerformed(LoginForm.java:95) ``` 折磨了我整整一个下午加晚上…明天就要交了 求救啊各位大佬…… 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览