Hi, leutz ,
ich habe ein kleines Problem, wir müssen ein Memory Game programmieren und ich habe mal buttons erstellt und drunter labels gelegt. Wenn ich auf ein Button klicke wird er als setvisible = false gesetzt und das label auf true, damit es sichtbar ist. Das Problem ist jetzt, wenn ich auf den zweiten Button klicke, ruft er die Testing methode auf und wenn die labels nicht gleich sind vom Text, setzt er die buttons auf true und labels auf false wieder, doch ich möchte das er beim zweiten button das label noch für 2 sekunden anzeigen lässt. Doch er führt vorher die testing methode aus bevor er das sichtbar macht. Ich ich wollte fragen, wie ich das so einstellen kann das er es sichtbar macht und erst danach prüft ob es gleich ist und dann eventuell wieder zudeckt.
Danke schonmal für die Hife.
ich habe ein kleines Problem, wir müssen ein Memory Game programmieren und ich habe mal buttons erstellt und drunter labels gelegt. Wenn ich auf ein Button klicke wird er als setvisible = false gesetzt und das label auf true, damit es sichtbar ist. Das Problem ist jetzt, wenn ich auf den zweiten Button klicke, ruft er die Testing methode auf und wenn die labels nicht gleich sind vom Text, setzt er die buttons auf true und labels auf false wieder, doch ich möchte das er beim zweiten button das label noch für 2 sekunden anzeigen lässt. Doch er führt vorher die testing methode aus bevor er das sichtbar macht. Ich ich wollte fragen, wie ich das so einstellen kann das er es sichtbar macht und erst danach prüft ob es gleich ist und dann eventuell wieder zudeckt.
Danke schonmal für die Hife.
Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.text.html.parser.Parser;
public class gui extends JFrame implements ActionListener{
Container myCon = getContentPane();
Icon background_pic = new ImageIcon("/home/blaic/workspace/memory_project/src/pics/ruckseite1.jpg");
private JLabel[] mylabels;
private JButton[] mybuttons;
static String temp="";
int tep=0;
int time=0;
int i=0;
int size;
int[] randA;
public gui()
{
super("Memory");
this.setSize(1024,800);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container myCon = this.getContentPane();
myCon.setLayout(null);
}
public void rand()
{
int a=0;
randA = new int[this.size];
for(int i=0;i<randA.length;i++){
if(a%(this.size/2)==0)a=0;
randA[i]=a;
a++;
}
}
public void inibutton(int size)
{
mylabels = new JLabel[size];
mybuttons = new JButton[size];
this.size=size;
rand();
}
public void randpics(){}//random pictures on labels
public void createJbutton() //create buttons and labels on GUI
{
int x=0,y=-80, a=0;//,b=((int)(10.0 * Math.random()) + 1)%(this.size/2),c=0;
for(int i=0;i<this.size;i++)
{
//c=0;
if(i % (this.size/4) == 0){y+=130;x=0;}
mylabels[i]= new JLabel();
mylabels[i].setVisible(false);
mylabels[i].setSize(50, 100);
/* while(b!=randA[i]){
if(b!=randA[c++] && c<randA.length){}
else if(c>=randA.length){b=((int)(10.0 * Math.random()) + 1)%(this.size/2);c=0;}
else
{
randA[c]=-1;
break;
}
}*/
mylabels[i].setName(String.valueOf(i%(this.size/2)));
mylabels[i].setText(String.valueOf(i%(this.size/2)));
if(a == (this.size/2))a=0;
mylabels[i].setBounds(10+x*60, y, 50, 100);
mybuttons[i]= new JButton();
mybuttons[i].setVisible(true);
mybuttons[i].setSize(50, 100);
mybuttons[i].setIcon(background_pic);
mybuttons[i].setBounds(10+x *60, y, 50, 100);
mybuttons[i].setName(String.valueOf(i));
mybuttons[i].addActionListener(this);
x++;
myCon.add(mylabels[i]);
myCon.add(mybuttons[i]);
}
}
public void showbuttons()
{
}
public void actionPerformed(ActionEvent evt) {
if(evt.getSource() instanceof JButton)i=Integer.parseInt(((JButton)evt.getSource()).getName());
time++;
System.out.println("i="+i+"tep="+tep+"time="+time);
mybuttons[i].setVisible(false);
mylabels[i].setVisible(true);
if(time % 2 == 0)
{
testing(tep,i);
}
tep=i;
}
public void testing(int i,int j)
{
if(mylabels[i].getText().equals(mylabels[j].getText())){
mybuttons[i].removeActionListener(this);
mybuttons[j].removeActionListener(this);
}
else{
mylabels[i].setVisible(false);
mybuttons[i].setVisible(true);
mylabels[j].setVisible(false);
mybuttons[j].setVisible(true);
}
}
}