Ich und mein Freund schreiben gerade ein Memory-Spiel als unsere letzte Aufgabe für unseren ersten Programmierkurs. Wir haben uns gefragt, ob es eine andere Möglichkeit gäbe, unsere Jbuttons und ihre Eigenschaften besser mit weniger Zeilen in einer Art Schleifenform zu initialisieren. Im Allgemeinen müssen wir diesen Code effizienter gestalten, sind alle Tipps sehr geschätzt :)Wie viele ähnliche Jbuttons mit weniger Codezeilen zu initialisieren und zu verwenden?
Einfache Stufe Klasse:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingConstants;
import java.util.Timer;
import java.util.TimerTask;
class EasyWindow extends JFrame implements ActionListener, MouseListener {
JLabel Score = new JLabel("Score: - ");
JLabel Welcome = new JLabel("Welcome " + StartWindow.user + "!");
ImageIcon Back = new ImageIcon("mback.png");
ImageIcon musicicon = new ImageIcon("musicicon.png");
ImageIcon themeicon = new ImageIcon("themeicon.png");
ImageIcon difficultyicon = new ImageIcon("difficulty.png");
ImageIcon pointsicon = new ImageIcon("pointsicon.png");
ImageIcon studentsicon = new ImageIcon("studentsicon.png");
JButton AnOtherLevel = new JButton(
"Click here if you want to change level.");
JButton Quit = new JButton("Quit Game!");
JButton Button0 = new JButton(Back);
JButton Button1 = new JButton(Back);
JButton Button2 = new JButton(Back);
JButton Button3 = new JButton(Back);
JButton Button4 = new JButton(Back);
JButton Button5 = new JButton(Back);
JButton Button6 = new JButton(Back);
JButton Button7 = new JButton(Back);
JButton Button8 = new JButton(Back);
JButton Button9 = new JButton(Back);
JButton Button10 = new JButton(Back);
JButton Button11 = new JButton(Back);
JButton Button12 = new JButton(Back);
JButton Button13 = new JButton(Back);
JButton Button14 = new JButton(Back);
JButton Button15 = new JButton(Back);
JMenuBar menuBar = new JMenuBar();
JMenu Settings = new JMenu("Settings");
JMenu Theme = new JMenu("Theme");
JMenu Rules = new JMenu("Rules");
JMenu Creators = new JMenu("Creators");
JMenuItem Music = new JMenuItem("Music", musicicon);
JMenuItem Celebrities = new JMenuItem("Celebrities", themeicon);
JMenuItem Cities = new JMenuItem("Cities", themeicon);
JMenuItem Memes = new JMenuItem("Memes", themeicon);
JMenuItem Difficulty = new JMenuItem("Difficulty", difficultyicon);
JMenuItem Points = new JMenuItem("Points", pointsicon);
JMenuItem Ava = new JMenuItem("Ava Baghchesara", studentsicon);
JMenuItem Michelle = new JMenuItem("Michelle Bill", studentsicon);
static int[] cardChecker = new int[2];
static int[] card = new int[9];
int[] StoreCards = new int[16];
int[] Button = new int[2];
static int flipped = 0;
static int score = 0;
static int seconds = 0;
String imageType = ".png";
String back = ".png";
JPanel Top = new JPanel(new GridLayout(1, 1, 5, 15));
JPanel Center = new JPanel(new GridLayout(4, 4, 5, 5));
JPanel Bottom = new JPanel(new GridLayout(1, 2, 0, 0));
JPanel Right = new JPanel(new GridLayout(2, 2, 0, 0));
JPanel Left = new JPanel(new GridLayout(1, 1, 0, 0));
static Container contentArea;
public EasyWindow() {
super("User: " + StartWindow.user + " || Easy Level");
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(true);
setLayout(new BorderLayout());
setVisible(true);
AnOtherLevel.addActionListener(this);
Quit.addActionListener(this);
AnOtherLevel.addMouseListener(this);
Quit.addMouseListener(this);
Button0.addActionListener(this);
Button1.addActionListener(this);
Button2.addActionListener(this);
Button3.addActionListener(this);
Button4.addActionListener(this);
Button5.addActionListener(this);
Button6.addActionListener(this);
Button7.addActionListener(this);
Button8.addActionListener(this);
Button9.addActionListener(this);
Button10.addActionListener(this);
Button11.addActionListener(this);
Button12.addActionListener(this);
Button13.addActionListener(this);
Button14.addActionListener(this);
Button15.addActionListener(this);
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
Button0.setBackground(Color.white);
Button1.setBackground(Color.white);
Button2.setBackground(Color.white);
Button3.setBackground(Color.white);
Button4.setBackground(Color.white);
Button5.setBackground(Color.white);
Button6.setBackground(Color.white);
Button7.setBackground(Color.white);
Button8.setBackground(Color.white);
Button9.setBackground(Color.white);
Button10.setBackground(Color.white);
Button11.setBackground(Color.white);
Button12.setBackground(Color.white);
Button13.setBackground(Color.white);
Button14.setBackground(Color.white);
Button15.setBackground(Color.white);
add(Top, BorderLayout.NORTH);
add(Left, BorderLayout.WEST);
add(Center, BorderLayout.CENTER);
add(Right, BorderLayout.EAST);
add(Bottom, BorderLayout.SOUTH);
Welcome.setFont(new Font("Serif", Font.PLAIN, 30));
Welcome.setHorizontalAlignment(SwingConstants.CENTER);
Welcome.setVerticalAlignment(SwingConstants.CENTER);
Top.add(Welcome);
Top.setBackground(Color.white);
Center.add(Button0);
Center.add(Button1);
Center.add(Button2);
Center.add(Button3);
Center.add(Button4);
Center.add(Button5);
Center.add(Button6);
Center.add(Button7);
Center.add(Button8);
Center.add(Button9);
Center.add(Button10);
Center.add(Button11);
Center.add(Button12);
Center.add(Button13);
Center.add(Button14);
Center.add(Button15);
Center.setBackground(Color.white);
Right.setBackground(Color.white);
Right.add(Score);
Right.add(Timer);
Bottom.add(AnOtherLevel);
Bottom.add(Quit);
Bottom.setBackground(Color.white);
contentArea = getContentPane();
contentArea.add("North", Top);
contentArea.add("Center", Center);
contentArea.add("South", Bottom);
menuBar.add(Settings);
menuBar.add(Rules);
menuBar.add(Creators);
setJMenuBar(menuBar);
Music.addActionListener(this);
Theme.addActionListener(this);
Celebrities.addActionListener(this);
Cities.addActionListener(this);
Memes.addActionListener(this);
Difficulty.addActionListener(this);
Points.addActionListener(this);
Ava.addActionListener(this);
Michelle.addActionListener(this);
Settings.add(Music);
Settings.add(Theme);
Theme.add(Celebrities);
Theme.add(Cities);
Theme.add(Memes);
Rules.add(Difficulty);
Rules.add(Points);
Creators.add(Ava);
Creators.add(Michelle);
Game();
setContentPane(contentArea);
contentArea.setBackground(Color.white);
}
public void Game() {
int number = 0;
int x = 0;
ImageIcon image[] = new ImageIcon[15];
while (x < 16) {
number = (int) RandomNumbers.GetRandomNumber(8);
image[number] = new ImageIcon(number + imageType);
if (card[number] < 2) {
card[number]++;
StoreCards[x] = number;
System.out.println(number + " Number" + "card nr " + x);
x++;
}
}
}
public void Reset() {
if (flipped > 2) {
flipped = 0;
Button0.setIcon(Back);
Button1.setIcon(Back);
Button2.setIcon(Back);
Button3.setIcon(Back);
Button4.setIcon(Back);
Button5.setIcon(Back);
Button6.setIcon(Back);
Button7.setIcon(Back);
Button8.setIcon(Back);
Button9.setIcon(Back);
Button10.setIcon(Back);
Button11.setIcon(Back);
Button12.setIcon(Back);
Button13.setIcon(Back);
Button14.setIcon(Back);
Button15.setIcon(Back);
}
}
public void Check(int number) {
if (cardChecker[0] == cardChecker[1]) {
score = score + 2;
Score.setText("Score: " + score);
DisableButtons();
} else {
System.out.println("jj");
}
if (score == 16) {
setVisible(false);
new EndWindow1();
}
}
public void Card1and2(int number, int button) {
if (flipped == 0) {
cardChecker[0] = number;
Button[0] = button;
}
if (flipped == 1) {
cardChecker[1] = number;
Button[1] = button;
if (StoreCards[cardChecker[0]] == StoreCards[cardChecker[1]]) {
if (Button[0] != Button[1])
Check(number);
}
}
}
public void DisableButtons() {
if (Button[0] == 0 || Button[1] == 0) {
Button0.setVisible(false);
}
if (Button[0] == 1 || Button[1] == 1) {
Button1.setVisible(false);
}
if (Button[0] == 2 || Button[1] == 2) {
Button2.setVisible(false);
}
if (Button[0] == 3 || Button[1] == 3) {
Button3.setVisible(false);
}
if (Button[0] == 4 || Button[1] == 4) {
Button4.setVisible(false);
}
if (Button[0] == 5 || Button[1] == 5) {
Button5.setVisible(false);
}
if (Button[0] == 6 || Button[1] == 6) {
Button6.setVisible(false);
}
if (Button[0] == 7 || Button[1] == 7) {
Button7.setVisible(false);
}
if (Button[0] == 8 || Button[1] == 8) {
Button8.setVisible(false);
}
if (Button[0] == 9 || Button[1] == 9) {
Button9.setVisible(false);
}
if (Button[0] == 10 || Button[1] == 10) {
Button10.setVisible(false);
}
if (Button[0] == 11 || Button[1] == 11) {
Button11.setVisible(false);
}
if (Button[0] == 12 || Button[1] == 12) {
Button12.setVisible(false);
}
if (Button[0] == 13 || Button[1] == 13) {
Button13.setVisible(false);
}
if (Button[0] == 14 || Button[1] == 14) {
Button14.setVisible(false);
}
if (Button[0] == 15 || Button[1] == 15) {
Button15.setVisible(false);
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == AnOtherLevel) {
setVisible(false);
new AnOtherWindow();
}
if (event.getSource() == Quit) {
System.exit(0);
}
if (event.getSource() == Button0) {
int number = StoreCards[0];
Button0.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 0);
flipped++;
Reset();
}
if (event.getSource() == Button1) {
int number = StoreCards[1];
Button1.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 1);
flipped++;
Reset();
}
if (event.getSource() == Button2) {
int number = StoreCards[2];
Button2.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 2);
flipped++;
Reset();
}
if (event.getSource() == Button3) {
int number = StoreCards[3];
Button3.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 3);
flipped++;
Reset();
}
if (event.getSource() == Button4) {
int number = StoreCards[4];
Button4.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 4);
flipped++;
Reset();
}
if (event.getSource() == Button5) {
int number = StoreCards[5];
Button5.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 5);
flipped++;
Reset();
}
if (event.getSource() == Button6) {
int number = StoreCards[6];
Button6.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 6);
flipped++;
Reset();
}
if (event.getSource() == Button7) {
int number = StoreCards[7];
Button7.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 7);
flipped++;
Reset();
}
if (event.getSource() == Button8) {
int number = StoreCards[8];
Button8.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 8);
flipped++;
Reset();
}
if (event.getSource() == Button9) {
int number = StoreCards[9];
Button9.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 9);
flipped++;
Reset();
}
if (event.getSource() == Button10) {
int number = StoreCards[10];
Button10.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 10);
flipped++;
Reset();
}
if (event.getSource() == Button11) {
int number = StoreCards[11];
Button11.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 11);
flipped++;
Reset();
}
if (event.getSource() == Button12) {
int number = StoreCards[12];
Button12.setIcon(new ImageIcon(number + ".png"));
Card1and2(number, 12);
flipped++;
Reset();
}
if (event.getSource() == Button13) {
int number = StoreCards[13];
Button13.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 13);
flipped++;
Reset();
}
if (event.getSource() == Button14) {
int number = StoreCards[14];
Button14.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 14);
flipped++;
Reset();
}
if (event.getSource() == Button15) {
int number = StoreCards[15];
Button15.setIcon(new ImageIcon(number + imageType));
Card1and2(number, 15);
flipped++;
Reset();
}
if (event.getSource() == Celebrities) {
imageType = "c.png";
Back = new ImageIcon("ceback.png");
}
if (event.getSource() == Cities) {
imageType = ".jpg";
Back = new ImageIcon("ciback.png");
}
if (event.getSource() == Memes) {
imageType = ".png";
Back = new ImageIcon("mback.png");
}
}
public void mouseEntered(MouseEvent event) {
if (event.getSource() == AnOtherLevel) {
AnOtherLevel.setBackground(Color.lightGray);
AnOtherLevel.setForeground(Color.BLACK);
}
if (event.getSource() == Quit) {
Quit.setBackground(Color.lightGray);
Quit.setForeground(Color.BLACK);
}
}
public void mouseClicked(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
AnOtherLevel.setBackground(Color.white);
AnOtherLevel.setForeground(Color.BLACK);
Quit.setBackground(Color.white);
Quit.setForeground(Color.BLACK);
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
}
public class EasyLevelWindow {
public static void main(String[] args) {
EasyWindow win = new EasyWindow();
}
}
Verwenden Sie ein Array für Ihre Schaltflächen. – pzaenger
Oder eine Liste: beide werden überall helfen; nicht nur Initialisierung. Code, der Variablen foo1, foo2 .. fooN beinhaltet, sollte im Allgemeinen als eine Sequenz foo [n] behandelt werden. Und jeder Code, der "exzessives Kopieren und Einfügen" erfordert, sollte neu bewertet werden. – user2864740
Wenn ich ein JButton-Array wie zum Beispiel erstellen: JButton [] button = new JButton [15]; und später verwenden Sie eine for-Schleife zum Initialisieren: for (int n = 0; n <= button.length; n ++) { \t \t \t Schaltfläche [n] .setIcon (Zurück); \t \t \t Schaltfläche [n] .addActionListener (this); \t \t \t Schaltfläche [n] .setBackground (Farbe.weiß); \t \t \t Center.add (Schaltfläche [n]); \t \t} Ich bekomme eine Fehlermeldung über diese vier Zeilen – michelle