Code:
/*
* Slagalica.java
*
* Created on 2007. veljača 06, 19:02
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author Davor
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SlagalicaDZ extends JFrame{
JPanel panel=new JPanel();
int brojPoteza=0;
int[] randomi= new int[99];
public SlagalicaDZ() {
initiComponents();
}
private void initiComponents(){
this.setContentPane(panel);
panel.setLayout(new GridLayout(10,10));
popuniRandome();
dodajDugmeta();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(10,10,800,700);
this.setResizable(false); //neda povecavati ili smanjivati
this.setVisible(true);
this.repaint();
}
private void popuniRandome(){
int brojac=0;
while(brojac<99){
int tmp=(int)(Math.random()*99)+1;
if(!postoji(tmp)){
randomi[brojac]=tmp;
brojac++;
}
}
}
private boolean postoji(int broj){
for(int i=0;i<randomi.length;i++){
if (randomi[i]==broj)return true;
}
return false;
}
private void dodajDugmeta(){
for(int i=0;i<randomi.length;i++){
MojeDugme temp=new MojeDugme(""+randomi[i]);
panel.add(temp,""+randomi[i]);
}
panel.add(new JLabel(),"labela");
}
public static void main (String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new SlagalicaDZ();
}
});
}
public void dogodioSeKlik(ActionEvent e){
MojeDugme dugme=(MojeDugme)e.getSource();
Component[] c=panel.getComponents();
int pozicijaDugmeta= dajPozicijuDugmeta(dugme);
int pozicijaLabele=dajPozicijuLabela();
if(pozicijaDugmeta+10==pozicijaLabele || pozicijaDugmeta-10==pozicijaLabele || pozicijaDugmeta+1==pozicijaLabele || pozicijaDugmeta-1==pozicijaLabele){
Component temp=panel.getComponent(pozicijaLabele);
panel.add(dugme,pozicijaLabele);
panel.add(temp,pozicijaDugmeta);
this.paintAll(this.getGraphics());
brojPoteza++;
this.setTitle("Broj poteza:"+brojPoteza);
}
}
private int dajPozicijuDugmeta(MojeDugme dugme){
Component[] c= panel.getComponents();
for(int i=0;i<c.length;i++){
if(c[i]instanceof MojeDugme)//2
if((MojeDugme)c[i]==dugme){ //1
return i;
}
}
return -1;
}
private int dajPozicijuLabela(){
Component[] polje=panel.getComponents();
for(int i=0;i<polje.length;i++){
if(polje[i]instanceof JLabel) return i;
}
return -1;
}
class MojeDugme extends JButton implements ActionListener{
public void actionPerformed(ActionEvent e) {
dogodioSeKlik(e);
}
MojeDugme(String title){
this.setText(title);
this.addActionListener(this);
}
}
}
/*
* Slagalica.java
*
* Created on 2007. veljača 06, 19:02
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author Davor
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SlagalicaDZ extends JFrame{
JPanel panel=new JPanel();
int brojPoteza=0;
int[] randomi= new int[99];
public SlagalicaDZ() {
initiComponents();
}
private void initiComponents(){
this.setContentPane(panel);
panel.setLayout(new GridLayout(10,10));
popuniRandome();
dodajDugmeta();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(10,10,800,700);
this.setResizable(false); //neda povecavati ili smanjivati
this.setVisible(true);
this.repaint();
}
private void popuniRandome(){
int brojac=0;
while(brojac<99){
int tmp=(int)(Math.random()*99)+1;
if(!postoji(tmp)){
randomi[brojac]=tmp;
brojac++;
}
}
}
private boolean postoji(int broj){
for(int i=0;i<randomi.length;i++){
if (randomi[i]==broj)return true;
}
return false;
}
private void dodajDugmeta(){
for(int i=0;i<randomi.length;i++){
MojeDugme temp=new MojeDugme(""+randomi[i]);
panel.add(temp,""+randomi[i]);
}
panel.add(new JLabel(),"labela");
}
public static void main (String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new SlagalicaDZ();
}
});
}
public void dogodioSeKlik(ActionEvent e){
MojeDugme dugme=(MojeDugme)e.getSource();
Component[] c=panel.getComponents();
int pozicijaDugmeta= dajPozicijuDugmeta(dugme);
int pozicijaLabele=dajPozicijuLabela();
if(pozicijaDugmeta+10==pozicijaLabele || pozicijaDugmeta-10==pozicijaLabele || pozicijaDugmeta+1==pozicijaLabele || pozicijaDugmeta-1==pozicijaLabele){
Component temp=panel.getComponent(pozicijaLabele);
panel.add(dugme,pozicijaLabele);
panel.add(temp,pozicijaDugmeta);
this.paintAll(this.getGraphics());
brojPoteza++;
this.setTitle("Broj poteza:"+brojPoteza);
}
}
private int dajPozicijuDugmeta(MojeDugme dugme){
Component[] c= panel.getComponents();
for(int i=0;i<c.length;i++){
if(c[i]instanceof MojeDugme)//2
if((MojeDugme)c[i]==dugme){ //1
return i;
}
}
return -1;
}
private int dajPozicijuLabela(){
Component[] polje=panel.getComponents();
for(int i=0;i<polje.length;i++){
if(polje[i]instanceof JLabel) return i;
}
return -1;
}
class MojeDugme extends JButton implements ActionListener{
public void actionPerformed(ActionEvent e) {
dogodioSeKlik(e);
}
MojeDugme(String title){
this.setText(title);
this.addActionListener(this);
}
}
}
[Ovu poruku je menjao hyle dana 12.02.2007. u 08:56 GMT+1]