Ich versuche gerade ein Brettspiel zu programmieren. Damit die Spieler einen Character wählen können habe ich eine Characterwahl programmiert
(Siehe Bild unten).
Ich hab das Fenster in 3 Große JPanels aufgebaut (links,mitte,rechts) und am Ende mit einen BorderLayout zusammen gesetzt.
Mein Problem ist ich kann die Charaktere nicht zu den Spieler zuordnen. Der 1. Spieler soll auf einen der Bilder in der Mitte klicken und oben links bei ihn erscheinen.
Ich kann leider die einzelne JPanels nicht ansprechen, weil ich die mit einer schleife erstellt habe und gesetzt habe z. B. wenn ich versuche panel1 anzusprechen empfiehlt mir Eclipse die Variable zu erstellen.
Falls Ihr noch Informationen braucht, sagt bescheid.
Vielen Dank im Voraus!!!
Bild:
Code:
Links:
Die Mitte:
Rechts:
Frame:
Und am Ende werden die alle hinzugefügt
(Siehe Bild unten).
Ich hab das Fenster in 3 Große JPanels aufgebaut (links,mitte,rechts) und am Ende mit einen BorderLayout zusammen gesetzt.
Mein Problem ist ich kann die Charaktere nicht zu den Spieler zuordnen. Der 1. Spieler soll auf einen der Bilder in der Mitte klicken und oben links bei ihn erscheinen.
Ich kann leider die einzelne JPanels nicht ansprechen, weil ich die mit einer schleife erstellt habe und gesetzt habe z. B. wenn ich versuche panel1 anzusprechen empfiehlt mir Eclipse die Variable zu erstellen.
Falls Ihr noch Informationen braucht, sagt bescheid.
Vielen Dank im Voraus!!!
Bild:
Code:
Links:
Code:
private String[] nameForPanels = { "Nothing", "playerOne", "playerTwo", "playerThree", "playerFour", "playerFive",
"playerSix" };
//Panel für die Spieler auf der linken Seite
playerLeft = new JPanel();
playerLeft.setLayout(new BoxLayout(playerLeft, BoxLayout.Y_AXIS));
JPanel createLeftPanel;
for (int i = 1; i <= nameForPanels.length - 1; i = i + 2) {
createLeftPanel = new JPanel();
String name = String.format("panel%d", i);
// ich kann leider den JPanel nicht ansprechen z.B mit panel1.setVisible(false), sonst empfehlt mir die Eclipse die Variable zu erstellen
createLeftPanel.setName(name);
JLabel label = new JLabel();
String name2 = String.format("labelLeft%d", i);
label.setText("Player: " + i + "...");
label.setName(name2);
createLeftPanel.add(label);
createLeftPanel.setPreferredSize(new Dimension(300, createLeftPanel.getHeight()));
createLeftPanel.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("Linker Panel");
// der ActionListener ermittelt den richten Label, wenn meine Maus über den Label ist.
System.out.println("JPanel: " + label.getName());
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
playerLeft.add(createLeftPanel);
Die Mitte:
Code:
//Hintergrund wird gesetzt
characterSelectionPanel = new SetBackgorund("img/table.jpg");
GridLayout gridLayout = new GridLayout(ROWS, COULUMS, 30, 30);
panelCenter = new JPanel(gridLayout);
//damit man das Hintergrundbild sieht
panelCenter.setOpaque(false);
ImageIcon imageIcon;
for (int i = 1; i <= CHARACTER; i++) {
System.out.println("Schleife: " + i);
panelForCharacterPicture = new JPanel();
String name = String.format("panel%d", i);
panelForCharacterPicture.setName(name);
JLabel label = new JLabel();
String name2 = String.format("label%d", i);
label.setName(name2);
// Das passende Foto wird ausgewählt
imageIcon = getImage(i);
label.setIcon(imageIcon);
panelForCharacterPicture.add(label);
panelForCharacterPicture.setOpaque(false);
panelForCharacterPicture.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
if (actionListener) {
System.out.println("Mouselistener From: " + label.getName());
System.out.println("ActionListener ist an");
//das "löschen" von den Bilder funktioniert
label.setVisible(false);
}
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {
}
});
panelCenter.add(panelForCharacterPicture);
}
Rechts:
Code:
Das Gleiche wie bei links nur ohne Actionlistener, der wird später hinzugefügt
private void createRightPanel() {
System.out.println("Ich komme in die Methode");
playerRight = new JPanel();
playerRight.setLayout(new BoxLayout(playerRight, BoxLayout.Y_AXIS));
JPanel createRightPanel;
for (int i = 2; i <= nameForPanels.length - 1; i = i + 2) {
createRightPanel = new JPanel();
String name = String.format("panel%s", nameForPanels[i]);
createRightPanel.setName(name);
JLabel label = new JLabel();
String name2 = String.format("labelLeft%d", i);
label.setText("Player" + i + "...");
label.setName(name2);
createRightPanel.add(label);
createRightPanel.setPreferredSize(new Dimension(300, createRightPanel.getHeight()));
playerRight.add(createRightPanel);
}
}
Frame:
Und am Ende werden die alle hinzugefügt
Code:
frame.add(characterSelectionPanel, BorderLayout.CENTER);
frame.add(playerLeft, BorderLayout.WEST);
frame.add(playerRight, BorderLayout.EAST);