Klasse wird nicht gelesen (sehr einfaches Java)?
gude,
warum wird die klasse, in der mein gesamter code Steht plötzlich nicht mehr gelesen?
danke
WhacAMole Klasse:
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class WhacAMole {
int boardWidth = 600;
int boardHeight = 650; //50 frei für den Text
JFrame frame = new JFrame("Mario: Whac A Mole");
JLabel textLabel = new JLabel();
JPanel textPanel = new JPanel();
JPanel boardPanel = new JPanel();
JButton[] board = new JButton[9];
ImageIcon moleIcon;
ImageIcon plantIcon;
JButton currMoleTile;
JButton currPlantTile;
Random random = new Random();
Timer setMoleTimer;
Timer setPlantTimer;
int score = 0;
WhacAMole() {
// frame.setVisible(true);
frame.setSize(boardWidth, boardHeight);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
textLabel.setFont(new Font("Arial", Font.PLAIN, 50));
textLabel.setHorizontalAlignment(JLabel.CENTER);
textLabel.setText("Score: " + Integer.toString(score));
textLabel.setOpaque(true);
textPanel.setLayout(new BorderLayout());
textPanel.add(textLabel);
frame.add(textPanel, BorderLayout.NORTH);
boardPanel.setLayout(new GridLayout(3, 3));
// boardPanel.setBackground(Color.black);
frame.add(boardPanel);
// plantIcon = new ImageIcon(getClass().getResource("./piranha.png"));
Image plantImg = new ImageIcon(getClass().getResource("./piranha.png")).getImage();
plantIcon = new ImageIcon(plantImg.getScaledInstance(150, 150, java.awt.Image.SCALE_SMOOTH));
Image moleImg = new ImageIcon(getClass().getResource("./monty.png")).getImage();
moleIcon = new ImageIcon(moleImg.getScaledInstance(150, 150, java.awt.Image.SCALE_SMOOTH));
for (int i = 0; i < 9; i++) {
JButton tile = new JButton();
board[i] = tile;
boardPanel.add(tile);
tile.setFocusable(false);
// tile.setIcon(plantIcon);
tile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton tile = (JButton) e.getSource();
if (tile == currMoleTile) {
score += 10;
textLabel.setText("Score: " + Integer.toString(score));
}
else if (tile == currPlantTile) {
textLabel.setText("Game Over: " + Integer.toString(score));
setMoleTimer.stop();
setPlantTimer.stop();
for (int i = 0; i < 9; i++) {
board[i].setEnabled(false);
}
}
}
});
}
setMoleTimer = new Timer(1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
//remove icon from current tile
if (currMoleTile != null) {
currMoleTile.setIcon(null);
currMoleTile = null;
}
//randomly select another tile
int num = random.nextInt(9); //0-8
JButton tile = board[num];
//if tile is occupied by plant, skip tile for this turn
if (currPlantTile == tile) return;
//set tile to mole
currMoleTile = tile;
currMoleTile.setIcon(moleIcon);
}
});
setPlantTimer = new Timer(1500, new ActionListener() {
public void actionPerformed(ActionEvent e) {
//remove icon from current tile
if (currPlantTile != null) {
currPlantTile.setIcon(null);
currPlantTile = null;
}
//randomly select another tile
int num = random.nextInt(9); //0-8
JButton tile = board[num];
//if tile is occupied by mole, skip tile for this turn
if (currMoleTile == tile) return;
//set tile to mole
currPlantTile = tile;
currPlantTile.setIcon(plantIcon);
}
});
setMoleTimer.start();
setPlantTimer.start();
frame.setVisible(true);
}
}
Was steht denn in der anderen Klasse?
Sekunde wird ergänzt
1 Antwort
Also bei mir gehts.
hab natürlich die Bilder entfernen müssen, da ich diese nicht habe.
Der Rest ist aber gleich.
Hast du die Hauptklasse, in der die main Methode drin ist, auch gestartet?
Ich hab die bei mir einfach nur Main genannt, normalerweise nenne ich die auch anders. Nicht verwirren lassen.

Das ist meine Main Methode, wie gesagt, du kannst die Klasse nennen wie du willst.
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
WhacAMole mole = new WhacAMole();
}
}
danke dir auf jeden fall aber die Fehlermeldung bleibt diesselbe, glaube ich habe dieandere klasse irgendwie falsch abgelegt
hm okay, hast du ne andere Idee wie ich das lösen kann also zum Beispiel alles in die main schreiben oder so?
Auf deinem Screenshot ist keine Fehlermeldung zu sehen.
Das einzige ist ein Hinweis, dass die whacAMole-Variable zwar definiert, aber nicht benutzt wird. Dieser Hinweis der IDE ist nützlich, um unbenutzte Variablen aufzuspüren, die man im Prinzip löschen kann. In deinem Fall kannst du den Hinweis ignorieren oder du schreibst in main wirklich einfach nur
new WhacAMole();
An der Funktionalität des Programms ändert sich dadurch nichts.
ja also ich starte die Klasse die bei mir Javaspiel heißt immer. In dieser main ist allerdings auch die Fehlermeldung dass die Variable WhacAmole nicht gelesen wird, also keine Ahnung was ich falsch habe