Erste Schritte Erstes Project - Hilfe

vins1805

Mitglied
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
}
}
}
 

Robat

Top Contributor
Hallo vins1805,

vorab ein kleiner Hinweis: Poste deinen Code bitte in [code=Java]MY CODE[/code] Tags. So kann man es besser lesen / zitieren.

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);
}

Das es in grau angezeigt wird liegt daran, dass du Var.pressed in deiner if Bedingung auf true setzt.
Abfragen macht man mit ==. Also if(Var.pressed == true).

----

Hast du es schon mal mit setFocusable(true); versucht?

Gruß
Robert
 

vins1805

Mitglied
du hast recht. wie dumm von mir :DD
danke. ne kenne den befehl nicht, werd mir den aber mal durchlesen.
hast du eine ahnung wegen des eigentlichen problems?
 

vins1805

Mitglied
oder welche möglichkeiten gibt es am schönsten einen button zu programmieren?
ich will nicht diese JButton funktion benutzen, weil die dort wie standartmäßige windows button aussehen.
 

vins1805

Mitglied
Ich glaube ich muss iwie meinen button zu einer komponenten machen und dann kann ich abrufen ob die maus auf dem button ist mit MouseEnter...

Das problem ist ich konnte nichtmal eine textausgabe beim linksklick hinkriegen. Da fehlt wohl noch mehr.
 

vins1805

Mitglied
um mir einen eigenen button zu erstellen muss ich ja warscheinlich mit dem extends befehl arbeiten. also neue klasse erstellen und dann sieht der anfang so aus

public class Button extends JButton()

dann heißt es aber laut einigen Internetseiten, dass die eigenschaften des JButtons vererbt werden. Kann ich diese Vererbungen aufheben? wie form und farbe? oder gehe ich in die falsche Richtung?
 

vins1805

Mitglied
Java:
[B]Var-Klasse:[/B]
package pack1;

import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.GraphicsEnvironment;
import java.io.File;
import java.io.IOException;

import javax.swing.*;

public class Var {

   //Fenster   
   static JFrame f;
   static JPanel p;
   static JLabel Titel;
[COLOR=#ff0000]   static Button b1;                             //Button als b1 deklariert[/COLOR]
   static int screenwidth = 800, screenheight = 600;
   
   //Koordinaten (Ball+Spieler)   
   static int x1 = 20, y1 = 185;
   static int x2 = 750, y2 = 185;
   static int xb = 200, yb = 200;
   
   //Menu   
   static int menu = 0;
   
   //Button   
   static int buttonx =250, buttony =267, buttonwidth =300, buttonheight =65;
   static boolean pressed=false;
   
   //Spieler Bewegung   
   static boolean moveup = false, movedown = false;

   //Ball Richtung   
   static int pongdirx = 1, pongdiry = -1;

   //Punktestand   
   static int Points1 = 0, Points2 = 0;
   //Schriftart   
   static Font Pixelfont;

   public Var() {

       try {
           Pixelfont = Font.createFont(Font.TRUETYPE_FONT, new File("coders_crux.ttf")).deriveFont(125f);
           GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
           ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File("coders_crux.ttf")));
       } catch (FontFormatException | IOException e) {

           e.printStackTrace();
       }

   }

}


[B]GUI-Klasse:[/B]
package pack1;

import java.awt.Color;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class GUI {

   public GUI() {

       Var.f = new JFrame();
       Var.f.setSize(Var.screenwidth, Var.screenheight);
       Var.f.setTitle("Pong");
       Var.f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       Var.f.setResizable(false);
       Var.f.setVisible(true);
       Var.f.setLocationRelativeTo(null);
       Var.f.addKeyListener(new Key());
       // Var.f.addMouseListener(new Button());
       Var.f.requestFocus();

       Var.p = new JPanel();
       Var.p.setBackground(Color.YELLOW);

       Var.Titel = new JLabel();
       Var.Titel.setFont(Var.Pixelfont);
       Var.Titel.setText("PONG");
       Var.Titel.getColorModel();

[COLOR=#ff0000]       Var.b1 = new Button();              //button aufrufen[/COLOR]

       Var.p.add(Var.Titel);
  [COLOR=#ff0000]     Var.p.add(Var.b1);                        //button aufs panel setzen[/COLOR]

       Var.f.add(Var.p);

       /*
        * Menu lbm = new Menu(); lbm.setBounds(0, 0, Var.screenwidth,
        * Var.screenheight); lbm.setVisible(true); Var.f.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.f.add(lb1); // Label zum Fenster hinzufügen }
        */
   }
}


[B]Button-Klasse:[/B]
package pack1;

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JButton;

[COLOR=#ff0000]public class Button extends JButton{
   
   /**
    * 
    */
   private static final long serialVersionUID = 1L;

   public void paintComponent(Graphics g){
       super.paintComponent(g);
       g.setColor(Color.WHITE);
       g.fillRect(Var.buttonx, Var.buttony, Var.buttonwidth, Var.buttonheight);
       
       g.setColor(Color.BLACK);
       g.setFont(Var.Pixelfont);
       g.drawString("START", Var.screenwidth / 2 - 110, 327);
       repaint();       

//button zeichnen mit text drinne und größe bestimmen
[/COLOR]
   }
   
}

Das rot makierte zeigt die wichtigsten sachen für den button. Ich habe den button jetzt als eigene Klasse erstellt, aber der wird mir ganz klein (nicht so wie ich den gezeichnet habe), als normaler JButton in windows format angezeigt. Ich verstehe nicht warum ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
I Letztes, erstes Element vom Array Java Basics - Anfänger-Themen 9
X Array erstes und letztes Element tauschen Java Basics - Anfänger-Themen 2
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
J erstes Vorkommen eines chars entfernen Java Basics - Anfänger-Themen 1
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
H java erstes projekt Java Basics - Anfänger-Themen 502
M OOP Mein erstes Textadventure... Java Basics - Anfänger-Themen 3
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
M Mein erstes Programm Java Basics - Anfänger-Themen 3
T erstes kleines Programm Java Basics - Anfänger-Themen 17
M Erste Schritte Erstes Programm mit Compiler öffnen Java Basics - Anfänger-Themen 4
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
M Erstes Textrollenspiel funktioniert...nicht. Java Basics - Anfänger-Themen 2
L Erstes Projekt aus zwei Projekten Java Basics - Anfänger-Themen 1
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
1 Mein erstes Programm, HELP!! Java Basics - Anfänger-Themen 2
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
A Erstes Programm: Polynom-Klasse Java Basics - Anfänger-Themen 15
B Erstes Element eines Vectors erhalten Java Basics - Anfänger-Themen 5
D Mein erstes Programm flackert Java Basics - Anfänger-Themen 5
W Erste Schritte erstes Programm Java Basics - Anfänger-Themen 40
A Textdatei einlesen - erstes Zeichen falsch Java Basics - Anfänger-Themen 20
I Liste Remove erstes Element Java Basics - Anfänger-Themen 5
W Erstes eigens Programm - Klassen- und Schüler Verwaltungsprogramm Java Basics - Anfänger-Themen 5
M Erstes "sinnvolles" Programm Java Basics - Anfänger-Themen 11
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
B Methoden Mein erstes Programm - und gleich Probleme Java Basics - Anfänger-Themen 6
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
R [CODECHECK] Erstes Programm Java Basics - Anfänger-Themen 6
T Erstes Zeichen aus String löschen Java Basics - Anfänger-Themen 8
J erstes Prog./Klasse - Konstruktur/Objekterstellung funktioniert nicht Java Basics - Anfänger-Themen 25
M Erstes Programm und Fehlermeldung Java Basics - Anfänger-Themen 5
B erstes Java-Applet Java Basics - Anfänger-Themen 7
M Erstes Zeichen in einem String in Großbuchstaben wandeln Java Basics - Anfänger-Themen 3
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
C Erstes Arraylist Element in for Schleife überspringen Java Basics - Anfänger-Themen 6
G Erstes Java-Programm Java Basics - Anfänger-Themen 10
E Erstes Programm - Problem mit Exception Java Basics - Anfänger-Themen 3
G Feststellen, ob erstes Zeichen eines Strings eine Ziffer ist Java Basics - Anfänger-Themen 11
M Serialisierung erstes Beispiel Java Basics - Anfänger-Themen 4
A erstes größeres Projekt Java Basics - Anfänger-Themen 14
P Mein erstes JAR-File Java Basics - Anfänger-Themen 8
G erstes Zeichen eines Strings herausfinden Java Basics - Anfänger-Themen 3
G erstes element einer haspmap Java Basics - Anfänger-Themen 5
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
T Erstes RPG: KeyAdapter Problem Java Basics - Anfänger-Themen 3
M erstes Zeichen ersetzen Java Basics - Anfänger-Themen 2
C Konstruktor wird nicht als erstes aufgerufen! Java Basics - Anfänger-Themen 11
L Suche Verbesserungsvorschläge für mein erstes Programm Java Basics - Anfänger-Themen 34
Bierhumpen mein erstes großes Programm. Was ändern? verbessern? Java Basics - Anfänger-Themen 12
O mit Regex erstes Zeichen überprüfen Java Basics - Anfänger-Themen 3
A Mein erstes Programm Java Basics - Anfänger-Themen 6
D JNDI-DataSource erstes mal benutzen Java Basics - Anfänger-Themen 4
T Erstes Programm Java Basics - Anfänger-Themen 7
B Erstes Programm :-/ Java Basics - Anfänger-Themen 3
C Erstes kleines Problem - string in chat ? Java Basics - Anfänger-Themen 9
M Erstes Element einer Enumeration? Java Basics - Anfänger-Themen 6
A Erstes Buch durchgelesen, wie weiter vorgehen? Java Basics - Anfänger-Themen 8
terashy VS Code Project run error Java Basics - Anfänger-Themen 10
sserio Project Euler 17 Java Basics - Anfänger-Themen 35
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
C Verbesserungsvorschlag für effizienteren Code - (Project Euler10) Java Basics - Anfänger-Themen 26
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
J .classpath und .project? Java Basics - Anfänger-Themen 1
JavaNewbie2.0 Project Euler Nr1 Java Basics - Anfänger-Themen 5
B Project Euler Problem 10 Java Basics - Anfänger-Themen 1
fLooojava first project - Verbesserungsvorschläge am Code Java Basics - Anfänger-Themen 8
M Exportieren von einem Project Java Basics - Anfänger-Themen 12
Helgon Build Project Java Basics - Anfänger-Themen 4
Fab1 Project Euler problem20 Fakultät von 100 Java Basics - Anfänger-Themen 13
G was ist der Project class path Java Basics - Anfänger-Themen 7
G OOP Projektabhängigkeiten: A cycle was detected in the build path of project Java Basics - Anfänger-Themen 10
S NetBeans Project erstellen Java Basics - Anfänger-Themen 17
K Export Eclipse-Project unter MAC OS X Java Basics - Anfänger-Themen 2
H exterme class Dateien in Eclipse Project einbinden Java Basics - Anfänger-Themen 1
S Project erschein nach dem Auschecken nicht im Package Explor Java Basics - Anfänger-Themen 4
M Java Project in IDE öffnen? Java Basics - Anfänger-Themen 2
B Hilfe beim Schüler-Project Java Basics - Anfänger-Themen 4
S Eclipse Project Java Basics - Anfänger-Themen 2
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
H pdf stempel - Hilfe erbeten Java Basics - Anfänger-Themen 6
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
F RegEx Hilfe Java Basics - Anfänger-Themen 5
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
S Hilfe bei Praktischen Aufgaben von Arrays Java Basics - Anfänger-Themen 39
U Ich bräuchte Hilfe Java Basics - Anfänger-Themen 1
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
Justin4687 Benötige Hilfe bei folgender Aufgabe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben