Diskuze: Projekt puzzle

Java Java Projekt puzzle

Avatar
dvorak.vit94
Člen
Avatar
dvorak.vit94:

Mám problém s projektem. Jsou to staré dobré Puzzle. Kód jsem napsal i částečně podle internetu. Ale stále mě to píše chybu v consoli:

Exception in thread "main" java.lang.NullPo­interException
at javax.swing.I­mageIcon.<init>(Un­known Source)
at Puzzle.<init>(Puz­zle.java:45)
at Puzzle.main(Puz­zle.java:84)

Programuji v Eclipsu. A zdrojový kód případně dodám. :)
Předem díky za pomoct a radu.

 
Odpovědět 30.3.2015 21:30
Avatar
MrPabloz
Člen
Avatar
Odpovídá na dvorak.vit94
MrPabloz:

Bez zdrojáku neporadí nikdo, takže by bylo lepší ho tu dodat :) ale tipuji, že máš null obrázek který někde nastavuješ, tedy asi ho špatně načítáš nebo tak :)

Nahoru Odpovědět 30.3.2015 22:03
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
dvorak.vit94
Člen
Avatar
Odpovídá na MrPabloz
dvorak.vit94:

import java.awt.Border­Layout;
import java.awt.Dimension;
import java.awt.Grid­Layout;
import java.awt.Image;
import java.awt.even­t.ActionEvent;
import java.awt.even­t.ActionListe­ner;
import java.awt.image­.CropImageFil­ter;
import java.awt.image­.FilteredImage­Source;

import javax.swing.Box;
import javax.swing.I­mageIcon;
import javax.swing.JBut­ton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Puzzle extends JFrame implements ActionListener {

/**
*
*/
private static final long serialVersionUID = 1L;
private JPanel centerPanel;
private JButton button;
private JLabel label;
private Image source;
private Image image;
int[][] pos;
int width, height;

public Puzzle() {
Pozice částí obrazku
pos = new int[][] {
{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{9, 10, 11}
};

centerPanel = new JPanel();
centerPanel.set­Layout(new GridLayout(4, 4, 0, 0));

Načtení obrazku
ImageIcon sid = new ImageIcon(Puz­zle.class.get­Resource("ice­sid.jpg"));
source = sid.getImage();

width = sid.getIconWidth();
height = sid.getIconHe­ight();

add(Box.create­RigidArea(new Dimension(0, 5)), BorderLayout.NOR­TH);
add(centerPanel, BorderLayout.CEN­TER);

for ( int i = 0; i < 4; i++) {
for ( int j = 0; j < 3; j++) {
if ( j == 2 && i == 3) {
label = new JLabel("");
centerPanel.ad­d(label);
} else {
button = new JButton();
button.addActi­onListener(this);
centerPanel.ad­d(button);
image = createImage(new FilteredImage­Source(source­.getSource(),
new CropImageFilter(j*wid­th/3, i*height/4,
(width/3)+1, height/4)));
button.setIcon(new ImageIcon(image));
}
}
}

setSize(325, 275);
setTitle("Puzzle");
setResizable(fal­se);
setLocationRe­lativeTo(null);
setDefaultClo­seOperation(JFra­me.DISPOSE_ON_CLO­SE);
setVisible(true);
}

public static void main(String[] args) {

new Puzzle();

}
tlačítka
public void actionPerformed(Ac­tionEvent e) {
JButton button = (JButton) e.getSource();
Dimension size = button.getSize();

int labelX = label.getX();
int labelY = label.getY();
int buttonX = button.getX();
int buttonY = button.getY();
int buttonPosX = buttonX / size.width;
int buttonPosY = buttonY / size.height;
int buttonIndex = pos[buttonPosY][but­tonPosX];

if (labelX == buttonX && (labelY - buttonY) == size.height ) {

int labelIndex = buttonIndex + 3;

centerPanel.re­move(buttonIn­dex);
centerPanel.ad­d(label, buttonIndex);
centerPanel.ad­d(button,labe­lIndex);
centerPanel.va­lidate();
}

if (labelX == buttonX && (labelY - buttonY) == -size.height ) {

int labelIndex = buttonIndex - 3;
centerPanel.re­move(labelIndex);
centerPanel.ad­d(button,labe­lIndex);
centerPanel.ad­d(label, buttonIndex);
centerPanel.va­lidate();
}

if (labelY == buttonY && (labelX - buttonX) == size.width ) {

int labelIndex = buttonIndex + 1;

centerPanel.re­move(buttonIn­dex);
centerPanel.ad­d(label, buttonIndex);
centerPanel.ad­d(button,labe­lIndex);
centerPanel.va­lidate();
}

if (labelY == buttonY && (labelX - buttonX) == -size.width ) {

int labelIndex = buttonIndex - 1;

centerPanel.re­move(buttonIn­dex);
centerPanel.ad­d(label, labelIndex);
centerPanel.ad­d(button,labe­lIndex);
centerPanel.va­lidate();
}
}
}

 
Nahoru Odpovědět 30.3.2015 23:05
Avatar
MrPabloz
Člen
Avatar
Odpovídá na dvorak.vit94
MrPabloz:

Jsi si jistý, že máš dobře cestu k obrázku? Chyba bude v tom, že ho nenajde, tudíž, zkus zčeknout cestu, název, typ, popř. načíst si ho zvlášť a co ti to udělá :)

Nahoru Odpovědět 30.3.2015 23:35
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
dvorak.vit94
Člen
Avatar
dvorak.vit94:

No myslím že jo. Ten obrázek je normálně vložen v tom projektu. Takže nevím. Ale zkusím to ještě.

 
Nahoru Odpovědět 31.3.2015 12:09
Avatar
dvorak.vit94
Člen
Avatar
Odpovídá na MrPabloz
dvorak.vit94:

Tak to mám asi dobře. Fakt nevím kde je chyba.

Editováno 31.3.2015 16:53
 
Nahoru Odpovědět 31.3.2015 16:52
Avatar
MrPabloz
Člen
Avatar
Odpovídá na dvorak.vit94
MrPabloz:

Skus to tedy takhle. Dej si pozor v jakém package a jak to je přesně umístěné :)

http://www.mkyong.com/…rces-folder/

Nahoru Odpovědět 31.3.2015 18:17
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
dvorak.vit94
Člen
Avatar
Odpovídá na MrPabloz
dvorak.vit94:

No já nevím, nechceš to zkusit udělat, dát si tam nějakej svůj obrázek. :) dělám v Eclipsu kdyžtak :)

 
Nahoru Odpovědět 31.3.2015 18:43
Avatar
D0ll0k
Člen
Avatar
Odpovídá na dvorak.vit94
D0ll0k:

Mě to funguje. Kam přesně dáváš ten obrázek? Měl by být ve složce společně se třídou. Když si otevřeš Package Explorer a zkopíruješ ho do package, kde máš třídu Puzzle, už by to nemělo házet chybu :)

Nahoru Odpovědět 2.4.2015 23:22
Ten, co se snaží "programovat"
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.