2016-08-30 4 views
0

Ich erstelle ein Paar Spiel in Java. Die Idee ist, dass ich 100 JButtons von 1 bis 100 nummeriert habe, und alle von ihnen hat Nummern von 1 bis 50 (2x mal) zugewiesen. Und wenn ich auf einen Knopf klicke, sollte er mir die Nummer anzeigen, die diesem Knopf zugewiesen ist. Und der Spieler muss den zweiten Knopf mit der gleichen Nummer finden. Wie kann ich diese Nummern JButtons zuweisen? Ihre Namen (1-100) sollten sichtbar sein, so dass ich die Schaltflächen nicht nur nach den Werten benennen und ihre Namen verbergen kann.Verknüpfen von JButtons mit Array?

package pairgame; 

import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.ArrayList; 
import java.util.Collections; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JOptionPane; 
import javax.swing.KeyStroke; 

public class PairGame extends JFrame implements ActionListener 
{ 
    JMenuBar menuBar = new JMenuBar(); 
    JMenu file, help; 
    JMenuItem fileExit, helpAbout; 
    JButton buttons[]; 

    ArrayList <Integer> numbers; 

    void createMenuBar() 
    {   
     file = new JMenu("File"); 
      fileExit = new JMenuItem("Exit"); 
      fileExit.addActionListener(this); 
      fileExit.setAccelerator(KeyStroke.getKeyStroke("ctrl Q")); 

Datei.add (fileExit); file.setMnemonic ('f');

help = new JMenu("Help"); 
     helpAbout = new JMenuItem("About"); 
     helpAbout.addActionListener(this); 
     helpAbout.setAccelerator(KeyStroke.getKeyStroke("ctrl H")); 
     help.add(helpAbout); 
     help.setMnemonic('h'); 

    menuBar = new JMenuBar(); 
     menuBar.add(file); 
     menuBar.add(help); 
     setJMenuBar(menuBar); 
} 

PairGame() 
{ 
    setTitle("Pair Game"); 
    setSize(600,600); 
    setLocation(400,100); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setLayout(new GridLayout(10,10)); 

    createMenuBar(); 

             // CREATING GAME MAP 

    numbers = new ArrayList<Integer>(); 
    for(int i=1; i<=50; i++) 
     numbers.add(i); 
    for(int i=51; i<=100; i++) 
     numbers.add(i-50); 

    Collections.shuffle(numbers);  

    buttons = new JButton[100]; 
    for(int i=0; i<100; i++) 
    { 
     buttons[i] = new JButton(""+(i+1)); 
     buttons[i].addActionListener(this); 
     add(buttons[i]); 
    } 


    setVisible(true); 
} 

public static void main(String[] args) 
{ 
    new PairGame(); 
} 


public void actionPerformed(ActionEvent e) 
{ 
    Object source = e.getSource(); 

    if (source==fileExit) 
     System.exit(0); 

    if (source==helpAbout) 
     JOptionPane.showMessageDialog(this, "blablabla", "About", 3);   

} 

}

Ich habe gerade angefangen zu schreiben, so nicht geben mir Ratschläge über die Konstruktion etc, weil seine Pre-Alpha-Version :)

Antwort

0

Sie die Werte aus dem Test trennen könnte durch eine eigene Klasse erstellen, zum Beispiel erstreckt sich die JButton,:

public class PairButton extends JButton { 

private final int myRealValue; 

public PairButton(int myRealValue){ 
    this.myRealValue = myRealValue; 
} 

public int getMyRealValue() { 
    return myRealValue; 
} 

}

+1

das ist gute Idee, b ut setName() und getName() lösten mein Problem :) – Kurczaksky