Bilder auf Buttons per Klick tauschen ( Puzzle )

HansK

Mitglied
Hallo,
Ich bräuchte Codingansätze um Bilder, welche auf Buttons liegen, zu tauschen!
Man sollte auf den einen Button klicken, dann auf einen zweiten, und somit die Bilder getauscht bekommen. Habe schon alles probiert aber ich bekomme es einfach nicht hin.
Das ganze soll ein Puzzlespiel werden.

MfG,
Hans
 

HansK

Mitglied
Dort wurde die Frage leider nicht so gut beantwortet das ich es irgendwie lösen konnte.
Ich bin ein Anfänger und bräuchte da schon Coding Beispiele.

Gruß,
Hans
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Wir wurde in jedem Thread eine Frage gestellt, du hast dich aber gar nicht mehr geäußert. Wie soll man dir da denn helfen? :bahnhof: Alle paar Tage das selbe Thema aufmachen ohne Rückmeldung ist keine Lösung.
 

Michael...

Top Contributor
Hier mal ein Ansatz zum Icontausch. Wobei Du mit der Vorgehensweise (s. m. Kommentar in einem der anderen Posts) vermutlich nicht glücklich wirst.
Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ButtoIconSwap extends JFrame implements ActionListener {
	private int index;
	private JButton[] button;
	private JLabel label;
	
	public ButtoIconSwap() {
		index = -1;
		JPanel panel = new JPanel(new GridLayout(1,3));
		button = new JButton[3];
		for (int i=0; i<button.length; i++) {
			button[i] = new JButton();
			button[i].addActionListener(this);
			//button[i].setIcon(.......);
			panel.add(button[i]);
		}
		this.getContentPane().add(panel, BorderLayout.CENTER);
		this.getContentPane().add(label = new JLabel(" Ersten Button selektieren! "), BorderLayout.SOUTH);
	}
	
	public void actionPerformed(ActionEvent e) {
		int curIndex = -1;
		for (int i=0; i<button.length; i++) {
			if (e.getSource().equals(button[i])) {
				curIndex = i;
				break;
			}
		}
		if(index==-1) {
			index = curIndex;
			label.setText(" Zweiten Button selektieren! ");
		}
		else {
			swapIcons(index, curIndex);
			index = -1;
			label.setText(" Ersten Button selektieren! ");
		}
	}
	
	private void swapIcons(int index1, int index2) {
		Icon icon = button[index1].getIcon();
		button[index1].setIcon(button[index2].getIcon());
		button[index2].setIcon(icon);
	}

	public static void main(String[] args) {
		JFrame frame = new ButtoIconSwap();
		frame.setBounds(0, 0, 400, 200);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}
 

HansK

Mitglied
Jetzt muss ich erstmal kniffeln wie ich das in mein Programm reinbekomme.
Ich kann ja mal mein bisheriges Coding zeigen.

Java:
import java.lang.String;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.*;
import java.applet.Applet;
import javax.swing.JFrame;
import java.awt.Container;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.io.*;

public class MenuExample extends JFrame {


  public MenuExample() {
    super("GAME");   // Fenstertitel an JFrame(String) übergeben
      setDefaultCloseOperation( EXIT_ON_CLOSE); // Fenster schließen = Ende
      
    Container contentPane = getContentPane();
    contentPane.setLayout( new GridLayout(3,3));  // Gridlayout 3x3 erzeugen

  final JButton[] arrayMitButtons = new JButton[10];
              for (int i = 1; i < arrayMitButtons.length; i++) {
              String index = String.valueOf(i);
              ImageIcon image = new
              ImageIcon("C:\\berg" +
              index + index + ".jpg");
              arrayMitButtons[i] = new JButton(image);
              //add(arrayMitButtons[i]);
              //arrayMitButtons[i].setVisible(false);
              }
//              JButton[] arrayCopy = new JButton[10];
//              for (int i = 1; i < arrayCopy.length; i++) {
//                arrayCopy[i] = arrayMitButtons[i];
//              }
//              System.out.println(arrayCopy[1].equals(arrayMitButtons[2]));


              for(int i = 1; i < arrayMitButtons.length; i++){
                JButton tmp = arrayMitButtons[i];
                int zelle = (int) (Math.random()*(arrayMitButtons.length - i) + i);
                arrayMitButtons[i] = arrayMitButtons[zelle];
                arrayMitButtons[zelle] = tmp;
                //System.out.println(i + "; " + zelle);

              }
              for(int i = 1; i <  arrayMitButtons.length; i++         ){
                add(arrayMitButtons[i]);
                arrayMitButtons[i].setVisible(false);
              }



    JMenu menu, submenu;
    JMenuItem menuItem;
    JMenuBar menuBar = new JMenuBar();

    menu = new JMenu( "GAME");          // Erzeugen eines Hauptmenüpunktes
    menuBar.add( menu);                       // Hinzufügen des Hauptmenüpunktes
    menuItem = new JMenuItem( "New Game"); // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);

    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
              for (int i = 1; i < arrayMitButtons.length; i++) {
              arrayMitButtons[i].setVisible(true);
              }
      }
    });

    
   /*  menuItem = new JMenuItem( "Bild 1");      // Erzeugen eines Untermenüs von New Game
    submenu.add( menuItem);                   // Untermenü wird dem Submenü hinzugefügt
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
              for (int i = 1; i < arrayMitButtons.length; i++) {
              arrayMitButtons[i].setVisible(true);
              }
      }
    });
    menuItem = new JMenuItem( "Bild 2");      // Erzeugen eines Untermenüs von New Game
    submenu.add( menuItem);                   // Untermenü wird dem Submenü hinzugefügt
    menuItem = new JMenuItem( "Bild 3");      // Erzeugen eines Untermenüs von New Game
    submenu.add( menuItem);                   // Untermenü wird dem Submenü hinzugefügt


    menuItem = new JMenuItem( "Reset"); // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);

    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
              for (int i = 1; i < arrayMitButtons.length; i++) {
              arrayMitButtons[i].setVisible(false);
              }


      }
    });
    */
                                                       // Untermenü wird dem Hauptmenü hinzugefügt
    menuItem = new JMenuItem( "Exit");                    // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);                                   // Untermenü wird dem Hauptmenü hinzugefügt
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
        System.exit(0);                                      // Durch wählen des Menupunketes "Exit" wird das Fenster beendet
      }
    });

    menu = new JMenu( "Optionen");           // Erzeugen eines Hauptmenüpunktes
    menuBar.add( menu);                        // Hinzufügen des Hauptmenüpunktes
    
   /* submenu = new JMenu( "Schwierigkeit");   // Erzeugen eines Sub-  bzw Untermenüs von Optionen
    menu.add( submenu);                      // Hinzufügen des Submenüpunktes
    menuItem = new JMenuItem( "Leicht");     // Erzeugen eines Untermenüs von Schwierigkeit
    submenu.add( menuItem);                  // Untermenü wird dem Submenü hinzugefügt
    menuItem = new JMenuItem( "Mittel");     // Erzeugen eines Untermenüs von Schwierigkeit
    submenu.add( menuItem);                  // Untermenü wird dem Submenü hinzugefügt
    menuItem = new JMenuItem( "Schwer");     // Erzeugen eines Untermenüs von Schwierigkeit
    submenu.add( menuItem);                  // Untermenü wird dem Submenü hinzugefügt
    */
    
    menuItem = new JMenuItem( "Hilfe");
    menu.add(menuItem);
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
        try
        {
        Desktop.getDesktop().open(new File("Hilfe.txt"));
        }
        catch(Exception eref)
        {
        }
      }
    });
    menuItem = new JMenuItem( "Handbuch"); // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
        try
        {
        Desktop.getDesktop().open(new File("Handbuch.pdf"));
        }
        catch(Exception eref)
        {
        }
      }
    });
    menuItem = new JMenuItem( "About"); // Erzeugen eines Untermenüs von Puzzle Pro
    menu.add(menuItem);
    menuItem.addActionListener( new ActionListener() {
      public void actionPerformed( ActionEvent e) {
             JOptionPane.showMessageDialog(null, "                                        ", "About", JOptionPane.CLOSED_OPTION);
      }
    });
    
    setJMenuBar( menuBar);                  // Erzeugen der kompletten Menüleiste
    setSize( 800, 600);                     // Größe der Menüleiste festlegen
    setResizable ( false ); // Fenster ist nicht veränderbar
  }



  public static void main( String[] args) {
    new MenuExample().setVisible( true);    // main() endet, Programm läuft weiter
  }
}

Könnte ich Teile von deinem Coding schon einbinden?
 

HansK

Mitglied
Noch eine Frage,

wie könnte ich denn das Coding schreiben das die Bilder direkt aus meinem Codingordner genommen werden und ich nicht den Pfad angeben muss? Kenne das nämlich nur so aber anders wäre es ja praktisch wenn jemand das Programm auf einem anderen Rechner starten will.

Gruß,
Hans
 

Michael...

Top Contributor
Kommt darauf an, wie Du Dein Projekt organisierst. ImageIO.read(...) kann auch mit relativen Pfaden umgehen.
Ich lade Bilder grundsätzlich über
Code:
getClass().getResource("...")
da ich Applikation eigentlich immer als jar verteile und notwendige Bilder/Icons mit hineinpacke.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Bilder für Buttons AWT, Swing, JavaFX & SWT 3
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
G JPanel per Drag and Drop JButtons und Bilder ablegen AWT, Swing, JavaFX & SWT 1
G JPanel mit JButtons und Bilder AWT, Swing, JavaFX & SWT 5
Linjutsu Den Inhalten aus einer ArrayList Bilder zuweisen (Kartenspiel) AWT, Swing, JavaFX & SWT 8
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
S AffineTranformation Bilder verschwinden von Anzeige bei Pan, Zoom AWT, Swing, JavaFX & SWT 6
G Bilder in javafx Project AWT, Swing, JavaFX & SWT 11
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Kirby.exe Bilder in GUI einfügen AWT, Swing, JavaFX & SWT 8
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
K JLabel mit Bilder im nicht initialisierten JPanel hinzufügen AWT, Swing, JavaFX & SWT 5
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
C Bilder so einbinden, dass sie sich ändern AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
J Bilder proportional verkleiner AWT, Swing, JavaFX & SWT 12
E Bilder skalieren AWT, Swing, JavaFX & SWT 4
DaCrazyJavaExpert Swing Bilder überlagern AWT, Swing, JavaFX & SWT 19
A Bilder als Hintergrund AWT, Swing, JavaFX & SWT 2
@SupressWarnings() JavaFX Bilder in executable jar laden AWT, Swing, JavaFX & SWT 5
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
K JPanel Bilder bei Windows nicht darstellbar AWT, Swing, JavaFX & SWT 6
Sugan Java FX Verzeichnisüberwachung -> Bilder auf GUI anzeigen AWT, Swing, JavaFX & SWT 4
E AWT Bilder als "Array" abspeichern. AWT, Swing, JavaFX & SWT 4
MrSnake Bilder aus Unterordner einfügen AWT, Swing, JavaFX & SWT 2
I 2D-Grafik Bilder Eingefügt, button jetzt im Hintergrund AWT, Swing, JavaFX & SWT 2
C SWT Treeview mit Bilder im Label verändert Expanded Icon AWT, Swing, JavaFX & SWT 1
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
thet1983 JTable Bilder AWT, Swing, JavaFX & SWT 6
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
F Bilder in jFrame einfügen AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
I Swing Bilder werden nach Export nicht angezeigt AWT, Swing, JavaFX & SWT 1
D 2D-Grafik Bilder anzeigen AWT, Swing, JavaFX & SWT 4
J Bilder auf JPanel (im JScrollPane) nacheinander laden AWT, Swing, JavaFX & SWT 0
vodkaz JFrame,Bilder und Zeitverzögerung AWT, Swing, JavaFX & SWT 2
A Swing Bilder werden nicht angezeigt AWT, Swing, JavaFX & SWT 3
I SWT Bilder, bzw. ein einzelnes Bild AWT, Swing, JavaFX & SWT 6
M Bilder zeichnen, NullPointer Exception AWT, Swing, JavaFX & SWT 3
Xbody 2D-Grafik JavaFX Bilder transformieren AWT, Swing, JavaFX & SWT 2
C 2D-Grafik Steganographie - Verschlüsselung von Dateien in Bildern - Bilder zeigen schwarze Rechtecke AWT, Swing, JavaFX & SWT 13
P Durch Bilder Scrollen AWT, Swing, JavaFX & SWT 2
F Bilder werden nicht in's Array geladen AWT, Swing, JavaFX & SWT 4
K Bilder übereinanderlegen AWT, Swing, JavaFX & SWT 11
windl Querstreifen beim Bilder malen und anpassen an neue CPU AWT, Swing, JavaFX & SWT 12
V Fertige Komponente zum Anzeigen mehrerer Bilder AWT, Swing, JavaFX & SWT 5
Karuka 2D-Grafik Bilder in GridLayout einfügen AWT, Swing, JavaFX & SWT 7
J Bilder in ausführbare jar einbinden AWT, Swing, JavaFX & SWT 7
J Swing Bilder anzeigen in Gridlayout AWT, Swing, JavaFX & SWT 11
H 2D-Grafik Bilder laden ist nicht zuverlässig AWT, Swing, JavaFX & SWT 3
F Bilder ineinander kopieren AWT, Swing, JavaFX & SWT 3
P Bilder verkleinern AWT, Swing, JavaFX & SWT 2
C SWT Mehrere Bilder in GUI laden AWT, Swing, JavaFX & SWT 5
Furtano AWT Skalierung mehrerer Bilder / Histogramme im Fenster AWT, Swing, JavaFX & SWT 4
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
C Zwei Bilder übereinander legen AWT, Swing, JavaFX & SWT 1
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S Flickr Bilder in Gui Oberfläche AWT, Swing, JavaFX & SWT 21
L Bilder im JPanel als Hintergrund - Swing AWT, Swing, JavaFX & SWT 2
K Bilder nacheinander einfügen AWT, Swing, JavaFX & SWT 3
H Bilder in Array zufällig anordnen AWT, Swing, JavaFX & SWT 4
P 2D-Grafik Viele Bilder zu einem Video AWT, Swing, JavaFX & SWT 3
J Vergleicher zweier Bilder AWT, Swing, JavaFX & SWT 2
C zwei Bilder nacheinander anzeigen AWT, Swing, JavaFX & SWT 2
L Swing Bilder über andere Bilder laden AWT, Swing, JavaFX & SWT 3
J Bilder überlappen AWT, Swing, JavaFX & SWT 18
P Bilder werden nach Änderung nicht angezeigt AWT, Swing, JavaFX & SWT 15
3 2D-Grafik Rechtecke auf Bilder legen und auslesen AWT, Swing, JavaFX & SWT 4
M Mehrere Bilder auf einmal anzeigen AWT, Swing, JavaFX & SWT 9
P Swing html mit bilder drin AWT, Swing, JavaFX & SWT 12
F Nicht alle Bilder werden angezeigt AWT, Swing, JavaFX & SWT 2
E Bilder auf JFrame AWT, Swing, JavaFX & SWT 7
R Bilder über URL einfügen AWT, Swing, JavaFX & SWT 4
F Applet zeigt Bilder nicht an AWT, Swing, JavaFX & SWT 5
M FileChooser Bilder auswählen AWT, Swing, JavaFX & SWT 8
G Swing Bilder zeichnen AWT, Swing, JavaFX & SWT 28
L Swing Bilder im Icons-Ordner AWT, Swing, JavaFX & SWT 4
U Bilder in Jar werden nicht gefunden AWT, Swing, JavaFX & SWT 5
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
A Bilder vergleichen AWT, Swing, JavaFX & SWT 4
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
E AWT Bilder und Java AWT, Swing, JavaFX & SWT 11
P Bilder einfügen AWT, Swing, JavaFX & SWT 4
D Swing JEditorPane mit HTML aber ohne Bilder AWT, Swing, JavaFX & SWT 3
S Swing Kleine Bilder in Panel einfügen AWT, Swing, JavaFX & SWT 13
A AWT Bilder als Link verwenden? AWT, Swing, JavaFX & SWT 11
T SWT Wie Bilder aus JAR-Dateien einbinden? AWT, Swing, JavaFX & SWT 12
S Bilder aus der Google Book Search API auslesen AWT, Swing, JavaFX & SWT 3
J Bilder in JScrollPane zentrieren AWT, Swing, JavaFX & SWT 5
M Bilder in einem Textfeld darstellen AWT, Swing, JavaFX & SWT 2
N Bilder aus Infos generieren lassen. Welches Framework? AWT, Swing, JavaFX & SWT 8
A SWT Bilder resizen AWT, Swing, JavaFX & SWT 9
A Swing Bilder in JFrame einfügen AWT, Swing, JavaFX & SWT 2
Cloud Einige Bilder werden nicht geladen AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben