tek sam poceo programirat u javi i krenuo sam napraviti obicnu slagalicu brojeva. problem naravno nastane kada pokrenem slagalicu! imam sva polja i sve brojeve na njemu, ali polja jednostavno ne zele da se pokrenu. da li iko od vas ima prijedlog kako da rijesim problem? evo dole koda, svaki komentar je pozeljan. hvala u naprijed =)
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class fifteenGame extends JFrame
{
private JFrame frame;
String[] buttonNr = {"15","14","13","12","11","10","9","8","7","6","5","4","3","2","1",""};
public fifteenGame()
{
makeFrame();
}
public void makeFrame(){
frame = new JFrame();
//this.setContentPane(frame);
frame.setLayout(new GridLayout(4,4,3,3));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
fillButtons();
frame.setBounds(100,100,300,200);
}
public static void main(String[] args){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new fifteenGame();
}
});
}
public void fillButtons()
{
for(int i = 0; i < buttonNr.length;i++){
Cell button = new Cell(""+ buttonNr[i]);
frame.add(button,""+buttonNr[i]);
}
}
public void keyPress(ActionEvent e){
JButton b=(JButton)e.getSource();
Component[] c = frame.getComponents();
int labelPosition = getLabelNumber();
int buttonPosition = getButtonNumber(b);
if(buttonPosition+5 == labelPosition ||buttonPosition-5 == labelPosition || buttonPosition+1 == labelPosition || buttonPosition-1 == labelPosition){
Component temp = frame.getComponent(labelPosition);
frame.add(b,labelPosition);
frame.add(temp,buttonPosition);
this.validate();
}
}
private int getButtonNumber(JButton button){
Component[] c = frame.getComponents();
for(int i=0;i<c.length;i++){
if(c[i] instanceof Cell ){
if((Cell)c[i]==button){
return i;
}
}
}
return -1;
}
private int getLabelNumber(){
Component[] c = frame.getComponents();
for(int i=0;i<c.length;i++){
if(c[i] instanceof JLabel){
return i;
}
}
return -1;
}
class Cell extends JButton implements ActionListener{
Cell(String name){
this.setText(name);
this.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
keyPress(e);
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class fifteenGame extends JFrame
{
private JFrame frame;
String[] buttonNr = {"15","14","13","12","11","10","9","8","7","6","5","4","3","2","1",""};
public fifteenGame()
{
makeFrame();
}
public void makeFrame(){
frame = new JFrame();
//this.setContentPane(frame);
frame.setLayout(new GridLayout(4,4,3,3));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();
fillButtons();
frame.setBounds(100,100,300,200);
}
public static void main(String[] args){
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new fifteenGame();
}
});
}
public void fillButtons()
{
for(int i = 0; i < buttonNr.length;i++){
Cell button = new Cell(""+ buttonNr[i]);
frame.add(button,""+buttonNr[i]);
}
}
public void keyPress(ActionEvent e){
JButton b=(JButton)e.getSource();
Component[] c = frame.getComponents();
int labelPosition = getLabelNumber();
int buttonPosition = getButtonNumber(b);
if(buttonPosition+5 == labelPosition ||buttonPosition-5 == labelPosition || buttonPosition+1 == labelPosition || buttonPosition-1 == labelPosition){
Component temp = frame.getComponent(labelPosition);
frame.add(b,labelPosition);
frame.add(temp,buttonPosition);
this.validate();
}
}
private int getButtonNumber(JButton button){
Component[] c = frame.getComponents();
for(int i=0;i<c.length;i++){
if(c[i] instanceof Cell ){
if((Cell)c[i]==button){
return i;
}
}
}
return -1;
}
private int getLabelNumber(){
Component[] c = frame.getComponents();
for(int i=0;i<c.length;i++){
if(c[i] instanceof JLabel){
return i;
}
}
return -1;
}
class Cell extends JButton implements ActionListener{
Cell(String name){
this.setText(name);
this.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
keyPress(e);
}
}
}