Guten Abend.
Ich sitze seit std. vor meinen Programm und versuche einen Mausinput zu kriegen. Leider ohne Erfolg. Ich glaube aber das ich kurz vorm Ziel bin.
Ich will nur mit der Maus einen Button anklicken und der soll dann etwas ausführen. Aber nicht diese hässlichen buttons mit JButton. Sondern einen den ich selber zeichne.
Es soll mal Pong werde. Das Spiel funktioniert auch schon ohne probleme. Nur das Hauptmenü will nicht so richtig
Programm:
Mouse Input:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Button implements ActionListener, MouseListener {
public Button() {
}
@Override
public void mousePressed(MouseEvent e) {
Damit das programm weiß wann die Maus über dem button ist (Button-koordinaten)
if (e.getX() >= Var.buttonx && e.getX() <= Var.buttonx + Var.buttonwidth && e.getY() >= Var.buttony
&& e.getY() <= Var.buttony + Var.buttonheight) {
Kriege nie das klick ausgegeben :-(
System.out.println("klick");
Var.pressed = true;
}
}
@Override
public void mouseReleased(MouseEvent e) {
//Var.pressed = false;
}
}
Variablen:
Button
static int buttonx =250, buttony =267, buttonwidth =300, buttonheight =65;
static boolean pressed=false;
Hauptmenu des Spieles:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JMenu;
public class Menu extends JMenu {
/**
*
*/
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// HINTERGRUND
g.setColor(Color.BLACK);
g.fillRect(0, 0, Var.screenwidth, Var.screenheight);
// Überschrift
g.setColor(Color.WHITE);
g.setFont(Var.Pixelfont);
g.drawString("PONG", Var.screenwidth / 2 - 90, 100);
Hier ist noch ein fehler. In den Variablen ist pressed=false. pressed wird aber nirgends auf true gesetzt. trotzdem wird es in Grau ausgegeben, obwohl es Weiß sein müsste. Aber viel wichtiger wäre mir erstmal das ich auf den Knopf draufdrücken kann und etwas passiert. ...
// Button
if (Var.pressed = false) {
g.setColor(Color.WHITE);
g.fillRect(Var.buttonx, Var.buttony, Var.buttonwidth, Var.buttonheight);
}
if (Var.pressed = true) {
g.setColor(Color.GRAY);
g.fillRect(Var.buttonx, Var.buttony, Var.buttonwidth, Var.buttonheight);
}
// Button Beschriftung
g.setColor(Color.BLACK);
g.setFont(Var.Pixelfont);
g.drawString("START", Var.screenwidth / 2 - 110, 327);
repaint();
}
}
GUI:
package pack1;
import javax.swing.JFrame;
public class GUI {
public GUI() {
Var.jf1 = new JFrame();
Var.jf1.setSize(Var.screenwidth, Var.screenheight);
Var.jf1.setTitle("Pong");
Var.jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Var.jf1.setLayout(null);
Var.jf1.setResizable(false);
Var.jf1.setVisible(true);
Var.jf1.setLocationRelativeTo(null);
Var.jf1.addKeyListener(new Key());
Var.jf1.addMouseListener(new Button());
Var.jf1.requestFocus();
if (Var.menu == 0) {
Menu lbm = new Menu();
lbm.setBounds(0, 0, Var.screenwidth, Var.screenheight);
lbm.setVisible(true);
Var.jf1.add(lbm);
/*
* JButton BStart = new JButton("START");
* BStart.setBounds(Var.screenwidth / 2 - 150, Var.screenheight / 2
* - 30, 300, 60); Var.jf1.add(BStart);
*/
}
if (Var.menu == 1) {
Label lb1 = new Label();
lb1.setBounds(0, 0, Var.screenwidth, Var.screenheight);
lb1.setVisible(true);
Var.jf1.add(lb1); // Label zum Fenster hinzufügen
}
}
}
Ich sitze seit std. vor meinen Programm und versuche einen Mausinput zu kriegen. Leider ohne Erfolg. Ich glaube aber das ich kurz vorm Ziel bin.
Ich will nur mit der Maus einen Button anklicken und der soll dann etwas ausführen. Aber nicht diese hässlichen buttons mit JButton. Sondern einen den ich selber zeichne.
Es soll mal Pong werde. Das Spiel funktioniert auch schon ohne probleme. Nur das Hauptmenü will nicht so richtig
Programm:
Mouse Input:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Button implements ActionListener, MouseListener {
public Button() {
}
@Override
public void mousePressed(MouseEvent e) {
Damit das programm weiß wann die Maus über dem button ist (Button-koordinaten)
if (e.getX() >= Var.buttonx && e.getX() <= Var.buttonx + Var.buttonwidth && e.getY() >= Var.buttony
&& e.getY() <= Var.buttony + Var.buttonheight) {
Kriege nie das klick ausgegeben :-(
System.out.println("klick");
Var.pressed = true;
}
}
@Override
public void mouseReleased(MouseEvent e) {
//Var.pressed = false;
}
}
Variablen:
Button
static int buttonx =250, buttony =267, buttonwidth =300, buttonheight =65;
static boolean pressed=false;
Hauptmenu des Spieles:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JMenu;
public class Menu extends JMenu {
/**
*
*/
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// HINTERGRUND
g.setColor(Color.BLACK);
g.fillRect(0, 0, Var.screenwidth, Var.screenheight);
// Überschrift
g.setColor(Color.WHITE);
g.setFont(Var.Pixelfont);
g.drawString("PONG", Var.screenwidth / 2 - 90, 100);
Hier ist noch ein fehler. In den Variablen ist pressed=false. pressed wird aber nirgends auf true gesetzt. trotzdem wird es in Grau ausgegeben, obwohl es Weiß sein müsste. Aber viel wichtiger wäre mir erstmal das ich auf den Knopf draufdrücken kann und etwas passiert. ...
// Button
if (Var.pressed = false) {
g.setColor(Color.WHITE);
g.fillRect(Var.buttonx, Var.buttony, Var.buttonwidth, Var.buttonheight);
}
if (Var.pressed = true) {
g.setColor(Color.GRAY);
g.fillRect(Var.buttonx, Var.buttony, Var.buttonwidth, Var.buttonheight);
}
// Button Beschriftung
g.setColor(Color.BLACK);
g.setFont(Var.Pixelfont);
g.drawString("START", Var.screenwidth / 2 - 110, 327);
repaint();
}
}
GUI:
package pack1;
import javax.swing.JFrame;
public class GUI {
public GUI() {
Var.jf1 = new JFrame();
Var.jf1.setSize(Var.screenwidth, Var.screenheight);
Var.jf1.setTitle("Pong");
Var.jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Var.jf1.setLayout(null);
Var.jf1.setResizable(false);
Var.jf1.setVisible(true);
Var.jf1.setLocationRelativeTo(null);
Var.jf1.addKeyListener(new Key());
Var.jf1.addMouseListener(new Button());
Var.jf1.requestFocus();
if (Var.menu == 0) {
Menu lbm = new Menu();
lbm.setBounds(0, 0, Var.screenwidth, Var.screenheight);
lbm.setVisible(true);
Var.jf1.add(lbm);
/*
* JButton BStart = new JButton("START");
* BStart.setBounds(Var.screenwidth / 2 - 150, Var.screenheight / 2
* - 30, 300, 60); Var.jf1.add(BStart);
*/
}
if (Var.menu == 1) {
Label lb1 = new Label();
lb1.setBounds(0, 0, Var.screenwidth, Var.screenheight);
lb1.setVisible(true);
Var.jf1.add(lb1); // Label zum Fenster hinzufügen
}
}
}