Hallo,
ich habe vor einigen Tagen mit Java angefangen und habe nun mein erstes Problem. Ich erstelle ein JFrame, auf dem ich Quadrate zeichne. Bei einem Klick auf eine Stelle des Panels sollen die Quadrate neu gezeichnet werden, aber erst ab der Stelle des Klicks.
Um dies zu erreichen habe ich einen MouseListener implementiert. Den füge ich dem JPanel wie folgt zu: panel.addMouseListener(this) . Als nächstes möchte ich mir mit der Methode mouseClicked() die Koordinaten (getX() und getY()) des Klicks holen. Und repaint(9 mit den geänderten Startwerten aufrufen. Da tut sich allerdings Nichts, da der MouseListener wohl falsch implementiert ist.
Meine beiden Klassen hänge ich mal an:
Wäre nett, wenn mir jemand helfen könnte.
Viele Grüße
schiese
ich habe vor einigen Tagen mit Java angefangen und habe nun mein erstes Problem. Ich erstelle ein JFrame, auf dem ich Quadrate zeichne. Bei einem Klick auf eine Stelle des Panels sollen die Quadrate neu gezeichnet werden, aber erst ab der Stelle des Klicks.
Um dies zu erreichen habe ich einen MouseListener implementiert. Den füge ich dem JPanel wie folgt zu: panel.addMouseListener(this) . Als nächstes möchte ich mir mit der Methode mouseClicked() die Koordinaten (getX() und getY()) des Klicks holen. Und repaint(9 mit den geänderten Startwerten aufrufen. Da tut sich allerdings Nichts, da der MouseListener wohl falsch implementiert ist.
Meine beiden Klassen hänge ich mal an:
Java:
package UebungMitFrames;
//import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
public class JFrameIncludesJPanel /*extends JPanel*/ {
int breite;
int hoehe;
String titel;
public JFrameIncludesJPanel(int breite, int hoehe, String titel, InhaltJFrame jframe) {
jframe.setPreferredSize(new Dimension(breite, hoehe));
jframe.setMaximumSize(new Dimension(breite, hoehe));
jframe.setMinimumSize(new Dimension(breite, hoehe));
JFrame frame = new JFrame(titel);
frame.add(jframe);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setVisible(true);
}
public static void main (String[] args) {
new JFrameIncludesJPanel(800,600,"Test", new InhaltJFrame(800,600,25));
}
}
Java:
package UebungMitFrames;
import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.JPanel;
public class InhaltJFrame extends JPanel implements MouseListener {
private static final long serialVersionUID = -3282658450774405410L;
JPanel panel;
int zaehlerw = 0;
int zaehlerh = 0;
int hoehe;
int breite;
int groesseQuadrat;
public InhaltJFrame(int breite, int hoehe, int groesseQuadrat) {
this.hoehe = hoehe;
this.breite = breite;
this.groesseQuadrat = groesseQuadrat;
panel = new JPanel();
panel.addMouseListener(this);
}
public void paint(Graphics g) {
super.paint(g);
int grenzeErsteFor = hoehe/groesseQuadrat;
int grenzeZweiteFor = breite/groesseQuadrat;
for (int j = zaehlerh; j < grenzeErsteFor; j++)
{
for (int i = zaehlerw; i < grenzeZweiteFor; i++)
{
g.drawRect(i*groesseQuadrat,j*groesseQuadrat,groesseQuadrat,groesseQuadrat);
}
}
}
public void mouseClicked(MouseEvent e) {
zaehlerw = (e.getX()/groesseQuadrat);
zaehlerh = (e.getY()/groesseQuadrat);
repaint();
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
}
Wäre nett, wenn mir jemand helfen könnte.
Viele Grüße
schiese
Zuletzt bearbeitet: