Hilfe! Java Swing

ich habe die code noch geändert.

Ich habe eine Methode für das Bildwechsel schnell geschrieben:


public void bildWechsel(JButton button0, JButton button_0 ){
Dimension size = button0.getSize();

int buttonX = button0.getX();
int buttonY = button0.getY();
int button_X = button_0.getX();
int button_Y = button_0.getY();
int buttonPosX= buttonX / size.width;
int buttonPosY= buttonY / size.height;
int buttonIndex = pos[buttonPosY][buttonPosX];

int buttonPos_X= button_X / size.width;
int buttonPos_Y= button_Y / size.height;
int button_Index = pos[buttonPos_Y][buttonPos_X];

panel1.add(button_0, buttonIndex);
panel2.add(button0, button_Index);
panel1.validate();
panel2.validate();


}



und dann die ActionEvent:

public void actionPerformed(ActionEvent e) {
// if buttton1 und button2 gedrückt, wechselt sich ihre Positionen.





boolean isSet = false;

if (button0 == e.getSource() ) {


System.out.println("button0 succesfull pressed");

if (button_0 == e.getSource() && isSet==false) {
bildWechsel(button0,button_0);
isSet = true;
System.out.println("button_0 succesfull pressed");
}

if (button_1 == e.getSource() && isSet==false) {
bildWechsel(button0,button_1);
isSet = true;
System.out.println("button_1 succesfull pressed");
}
//usw bis button_11

}


if (button1 == e.getSource()){

System.out.println("button1 succesfull pressed");

if (button_0 == e.getSource() && isSet==false) {
bildWechsel(button1,button_0);
isSet = true;
System.out.println("button_0 succesfull pressed");
}

if (button_1 == e.getSource() && isSet==false) {
bildWechsel(button1,button_1);
isSet = true;
System.out.println("button_1 succesfull pressed");
}
//usw bis button_11

}
}


Aber im moment es führt nur system.out.println("button0 succesfull pressed"); wenn ich klicke. die Code für den zweiten klickt führt es nicht aus.
 
Davon abgesehen, dass ich den Code ohne Code-Tags wie [ code=java ] oder wenigstens [ code ] kaum lesen kann, verstehe ich es irgendwie nicht. Du vergleichst zuerst ob button0 gedrückt wurde, in der selben if prüfst du ob button_0 gedrückt wurde. Warum speicherst du den selben Button in 2 Referenzen? Nimm doch einfach den Code, den DosCoder gepostet hat.
Zuerst wird der alte Button in eine Klassenvariable gespeichert, beim nächsten Klick werden die Icons zwischengespeichert und dann gegenseitig gesetzt. Danach wird der gespeicherte Button auf 'null' gesetzt, damit beim nächsten Klick wiederrum abgespeichert wird. Es gibt nur 2 Sachen, in Zeile 7 musst du iconSaved verwenden, in Zeile 8 iconNew (glaube ich, bin gerade nicht ganz da).
 
Java:
    public void bildWechsel(JButton button0, JButton button_0 ){
		Dimension size = button0.getSize();
		
		int buttonX = button0.getX();
		int buttonY = button0.getY();
		int button_X = button_0.getX();
		int button_Y = button_0.getY();
		int buttonPosX= buttonX / size.width;
		int buttonPosY= buttonY / size.height;
		int buttonIndex = pos[buttonPosY][buttonPosX];
		
		int buttonPos_X= button_X / size.width;
		int buttonPos_Y= button_Y / size.height;
		int button_Index = pos[buttonPos_Y][buttonPos_X];
		
		panel1.add(button_0, buttonIndex);
		panel2.add(button0, button_Index);
		panel1.validate();
		panel2.validate();
		
		
}

die ActionEvent

Java:
public void actionPerformed(ActionEvent e) {
		// if buttton1 und button2 gedrückt, wechselt sich ihre Positionen.

		
		
		
		
		boolean isSet = false;

		if (button0 == e.getSource() ) {
			   
			
			  System.out.println("button0 succesfull pressed");
			   
			   if (button_0 == e.getSource() && isSet==false) {
				   bildWechsel(button0,button_0);
				   isSet = true;
				   System.out.println("button_0 succesfull pressed");          
			    }

			    if (button_1 == e.getSource() && isSet==false) {
				   bildWechsel(button0,button_1);
				   isSet = true;
				   System.out.println("button_1 succesfull pressed");          
			    }	
			    //usw bis button_11	
			
		}

			
		if (button1 == e.getSource()){

	 		System.out.println("button1 succesfull pressed");
			   
			   if (button_0 == e.getSource() && isSet==false) {
				   bildWechsel(button1,button_0);
				   isSet = true;
				   System.out.println("button_0 succesfull pressed");          
			    }

			    if (button_1 == e.getSource() && isSet==false) {
				   bildWechsel(button1,button_1);
				   isSet = true;
				   System.out.println("button_1 succesfull pressed");          
			    }	
			    //usw bis button_11	
			
		}
}

Ich habe die Button für Panel1 button0,button1,button2,..,button11
und für die Panel2 button_0,button_1,button_2,..button_11 genannt.

panel 1 am linken, panel2 am rechten...
ich weiss nicht wie ich die Screen shot von dem Spiel anhängen kann.
 
Controll + Print ist eine Screenshot von der Anwendung, die gerade den Focus hat, Print einer vom gesamten Bildschirminhalt.
Dann Paint (mspaint.exe bei XP) öffnen, mit Controll + V einfügen und in eine Datei als png oder ähnliches Format (am besten jpg, bmp ist zu groß und gif führt i. d. R. zu erheblichen Farbverlust) speichern und bei einen neuen Post bei "Anhänge verwalten" hochladen.
 
die Code habe von dosCoder habe ich probiert. Es hört auf nach dem if

<java> public void actionPerformed(ActionEvent e) {
// if buttton1 und button2 gedrückt, wechselt sich ihre Positionen.

JButton savedButton = null;
JButton newButton;


if (savedButton == null){
savedButton = (JButton)e.getSource();
System.out.println("button0 succesfull pressed");
}else{
ImageIcon iconSaved = (ImageIcon) savedButton.getIcon();
ImageIcon iconNew = (ImageIcon)e.getSource();
newButton = (JButton)e.getSource();
newButton.setIcon(iconSaved);
savedButton.setIcon(((JButton)e.getSource()).getIcon());
savedButton = null;
System.out.println("ich bin hier");
} </java>
 
Also, wenn ich das jetzt alles in allem richtig verstanden habe, willst du per Klicks jeweils das Bild von einen Button des Linken und einen des Rechten teils vertauschen.

Das ist doch kein Problem. Du hast sogar von DosCoder einen Beispielsource bekommen.
Schau dir mal den Anhang an, ABER NUR ZUM LERNEN. Wenn du es nicht schaffst deinen Code bis auf die letzte Zeile zu erklären, wirst du später eher sehr schwer weiterkommen. Und ich möchte nicht an deiner schlechten Note schuld sein. (War nur so ein Spruch.)

Edit: Er muss doch nach den if aufhören, steht ja nicht mehr da.
 

Anhänge

  • Bildwechsel.zip
    4,1 KB · Aufrufe: 14
Ich kann die Jar Datei nicht öffnen...
Hast du die nur auf .java?

Mit 2 Klicks kann man das linken Bild mit dem rechten Bild vertauschen, und auch von rechten mit dem linken, wenn man zuerst das rechten Bild klickt, danach das linken Bild klickt.

Ich weisse es nicht, wie man ActionEvent ausführt nachdem zweiten klickt.. Normaleweise, man klickt, wird danach die Code ausgeführt.
Mein Plan ist, Ich klicke einen Button, danach klicke ich den zweiten Button, danach wird der Code ausgeführt, wo das Bild von dem ersten Button mit dem zweiten Button vertauschen werden.

Wenn ich das bekomme, muss ich noch die beide Panel "schüteln", so dass die Bilder nicht wie so aussieht wie im Anhang.
 

Anhänge

  • Bild 18.jpg
    Bild 18.jpg
    32,4 KB · Aufrufe: 9
Mit WinRAR kann man sie problemlos öffnen. Von andere Programme, außer natürlich der JRE weiß ich es nicht bestimmt.
Wird es ja. Das erste mal wird der Button abgespeichert, das 2. mal werden die Bilder ausgetauscht.
 
das Programm gibt Fehlermeldung aus..
Meldung: Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file

Und ich kann die Quellcode auch nicht lesen...
 

Neue Beiträge

Zurück