Pereiti prie turinio

JAVA paveiksleliu piesimas


Rekomenduojami pranešimai

Sveiki, kuriu savo pirma projekta. Tas pirmas projektas tai blackjack zaidimas. Sukuriau primiatyvia versija su paprastu JFrame, kadangi siekiu tobulet tai sugalvojau, kad reikia sukurti akiai malonesnes grafikas(background, mygtukai, kortupaveiksleliai). Pradejau nuo background.

 

Klase kurioje sukuriu JFrame:

 

import javax.swing.JFrame;

public class Interface extends JFrame {
private DefaultPanel currentPanel;
private Background bg = new Background();

public Interface() {

	super("Black Jack");
	currentPanel.add(bg);
	currentPanel = new DefaultPanel();
	setupFrame();
}

private void setupFrame() {

	this.setContentPane(currentPanel);
	this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	this.setResizable(false);
	this.setVisible(true);	
	this.setSize(530, 380);
}
}

 

Klase kuri piesia background:

 

import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JPanel;


public class Background extends JPanel {
private ImageIcon background;

public void paintComponent(Graphics g) {
	super.paintComponent(g);
	background = new ImageIcon("back.jpg");
	background.paintIcon(this, g, 0, 0);
}
}

 

Tai mano pirmas projektas, taigi neteiskit del kodo "palaidumo" :D

Kazkodel sis kodas nenupiesia paveikslelio. Paveikslelis teisingai ikeltas, bet gaunu error:

Exception in thread "main" java.lang.NullPointerException

at Interface.<init>(Interface.java:11)

at BlackJack.main(BlackJack.java:7)

 

Aciu uz pagalba :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Pabandyk

 

class background extends JPanel {
   Image md = new ImageIcon("back.png").getImage();
   public void paintComponent(Graphics g) {
       g.drawImage(md, 0, 0, getWidth(), getHeight(), this);
   }
}

 

o tada prie setupFrame

 

this.add(background);

 

 

Cia tiesiog uzdės paneliui backgrounda, o jame galėsi ką nori daryt

 

Dar pastebėjimas, pagal mane vietoj

private Background bg = new Background();

turėtu būt

private JPanel bg = new Background();

Redagavo Marelis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Background klasėje paintComponent() neturėtų būti šito:

background = new ImageIcon("back.jpg").getImage();

 

To marelis, negalima iš karto susieti kintamojo su failu. Kaip tavo fragmente. Tą reikia padaryti konstruktoriuje, be to paintComponent() pirmas sakinys turi būti

super.paintComponent(g);

kitaip nieko nepieš.

public Background(){
background = new ImageIcon("back.jpg").getImage();
}

 

O paintComponent() metode netinka, nes pagalvok. Tu visada šauksi repaint() ir kiekvieną kartą bus sukuriamas naujas paveikslėlio objektas.

Redagavo zyzlyz
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...