Hallo liebes Java-Forum,
mein Problem: Ich habe ein Menu und ein JPanel. Dieses JPanel wird ständig neu bemalt und wenn man nun auf einen Menü Eintrag klickt wird dieser gleich wieder vom Panel überzeichnet und man hat keine Möglichkeit auf diesen Menüeintrag zu klicken. Wie kann ich mein Panel ständig neumalen lassen und gleichzeitig mein Menü vernünftig nutzen?
Danke für die Hilfe und einen schönen Tag noch!
mein Problem: Ich habe ein Menu und ein JPanel. Dieses JPanel wird ständig neu bemalt und wenn man nun auf einen Menü Eintrag klickt wird dieser gleich wieder vom Panel überzeichnet und man hat keine Möglichkeit auf diesen Menüeintrag zu klicken. Wie kann ich mein Panel ständig neumalen lassen und gleichzeitig mein Menü vernünftig nutzen?
Java:
public class Gui {
private JFrame window;
private GamePanel gamePanel;
public Gui() {
window = new JFrame();
gamePanel = new GamePanel();
window.getContentPane().add(gamePanel);
window.setJMenuBar(new GameMenu(this));
window.setVisible(true);
}
public static void main(String[] args) {
new Gui();
}
}
Java:
public class GamePanel extends JPanel {
/** Image for double buffering */
private BufferedImage bufferedImage;
public GamePanel() {
setIgnoreRepaint(true);
addKeyListener(this);
setFocusable(true);
start();
}
public void initialize() {
bufferedImage = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
}
public void drawBuffer() {
Graphics2D bufferedGraphics2d = bufferedImage.createGraphics();
bufferedGraphics2d.setColor(Color.black);
bufferedGraphics2d.fillRect(0, 0, 800, 600);
bufferedGraphics2d.dispose();
}
public void drawScreen() {
Graphics2D g2d = (Graphics2D) this.getGraphics();
g2d.drawImage(bufferedImage, 0, 0, this);
Toolkit.getDefaultToolkit().sync();
g2d.dispose();
}
public void start() {
initialize();
while (true) {
try {
drawBuffer();
drawScreen();
Thread.sleep(15);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Java:
public class GameMenu extends JMenuBar {
private static final long serialVersionUID = 1L;
private JMenu gameMenuFile = new JMenu("File");
private JMenuItem gameMenuItemOpen = new JMenuItem("Open");
public GameMenu(Gui rootGUI) {
// super();
this.rootGUI = rootGUI;
initialize();
}
private void initialize() {
gameMenuItemOpen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.out.println("jo");
}
});
gameMenuFile.add(gameMenuItemOpen);
add(gameMenuFile);
}
}
Danke für die Hilfe und einen schönen Tag noch!