尝试使用Java将图像插入JButton时出错

时间:2016-01-21 18:06:03

标签: java swing nullpointerexception jbutton

我试图创建一个JButton,因为我想在其中插入一个图像。所以我创建了这个代码,它没有显示语法错误但是当我尝试执行此异常时出现:

enter image description here

有人可以告诉我如何将这个图像插入到JButton中吗?这是我的代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
import java.util.Random;

public class Background extends JFrame {
 private Random ran;
 private int value;
 private JButton b;
 private JButton c;

 public Background() {

  super("ttile");
  ran = new Random();
  value = nextValue();

  setLayout(new FlowLayout());
  b = new JButton("ROLL THE DICES");
  b.setForeground(Color.WHITE); //ndryshon ngjyren e shkrimit
  b.setBackground(Color.YELLOW);
  // b.setBounds(100, 100, 20, 70);
  add(b, BorderLayout.SOUTH);
  Icon e = new ImageIcon(getClass().getResource("x.png"));
  c = new JButton("hey", e);
  add(c);

  thehandler hand = new thehandler(); //konstruktori i handler merr nje instance te Background
  b.addActionListener(hand);
  c.addActionListener(hand);

 }
 private class thehandler implements ActionListener {

  public void actionPerformed(ActionEvent event) {

  }
 }

 public static void main(String[] args) {

  Background d = new Background();

  d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  d.getContentPane().setBackground(Color.GREEN);
  d.setSize(3000, 3000);

  d.setVisible(true);
 }
}

2 个答案:

答案 0 :(得分:0)

stacktrace将我们指向在代码中实例化ImageIcon的地方。

Icon e=new ImageIcon(getClass().getResource("x.png"));

可以通过正确寻址正在加载的资源来修复它。如果x.png驻留在资源文件夹中,这将解决问题。

 Icon e=new ImageIcon(getClass().getResource("/x.png"));

答案 1 :(得分:0)

一定要试试这个

BufferedImage bim=null;
    try {
     bim=ImageIO.read(new File("c:/.../x.png"));
    }
    catch (Exception ex) { ex.printStackTrace(); }      
Icon e=new ImageIcon(bim);

使用import javax.imageio。*;

在您的导入