2016-01-21 2 views
0

Я пытаюсь создать JButton, потому что хочу вставить в него изображение. Поэтому я создал этот код, который не показывает синтаксические ошибки, но когда я пытаюсь выполнить это появляется исключение:Ошибка при попытке вставить изображения в JButton с помощью Java

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); 
} 
} 
+0

Какое местоположение вашего изображения "x.png"? –

+0

C: \ Users \ user \ Desktop \ leksione \ JAVA \ eclipse \ Detyra e kursit \ bin – Doen

+0

Возможно, файл не находится там, где вы указываете, что вы не чувствительны к регистру, t добавьте расположение файла в путь сборки и т. д. Я предлагаю вам найти множество вопросов на этом сайте о загрузке ресурса с помощью 'getresource'. Это также поможет, если вы покажете иерархию структуры, где находятся класс и файл. – user1803551

ответ

0

В стеке мы указываем место, где в коде создается экземпляр ImageIcon.

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

Он может быть исправлен путем правильной адресации загружаемого ресурса. Если x.png находится в папке ресурсов, это устранит проблему.

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

Не помогает это решение. – Doen

+0

Можете ли вы описать структуру вашего проекта и путь, в котором находится файл ресурсов x.png? вы используете maven для сборки и упаковки? –

+0

C: \ Users \ user \ Desktop \ leksione \ JAVA \ eclipse \ Detyra e kursit \ bin это путь. Я использую packagigng – Doen

0

Наверняка попробовать этот

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

с импортом javax.imageio *.

по вашему запросу

+1

Для этого требуется, чтобы файл находился в каталоге 'C: /' –

+0

, куда его вставить? – Doen

+0

вместо Icon e = new ImageIcon (getClass(). GetResource ("x.png")); – gpasch

Смежные вопросы