BufferedImage einem ClickEvent hinzufügen

cool_brivk24

Mitglied
Hallöchien, liebe programmierer:

Fangen wir gleich mit dem Problem an: Ich habe ein Feld auf dem 36 BufferedImages gezeichnet wurden. Doch ich möchte abfragen, ob die Mouse auf dem Feld ist, dann soll das Feld eine blaue Umrandung bekommen und wenn die Maus diese Feld klickt, soll etwas passieren z.B. Sys.out.println(); etc. Ich wäre für die Lösung sehr dankbar. Zwar habe ich schon im Internet gegooelt, nur fand ich Englische Ergebnisse, und mein Englisch ist leider nicht so gut.

MFG
-cool_brick24
 

Robat

Top Contributor
Zeichnest du die Bilder direkt? Dann müsstest du dir wahrscheinlich eine Struktur ausdenken, die sowohl das Bild als auch die Koordinaten des Bildes abspeichert und eventuell noch eine Property die angibt, ob das Bild einen Border haben soll. Dann kannst du dir eine boolean intersects(Point) Methode schreiben die schaut, ob der angegebene Punkt innerhalb der Bild-Koordinaten liegt. Deinem JPanel kannst du dann einen MouseListener geben, wo du eben durch die Liste iterierst und schaust ob intersects(mousePos) true zurück gibt. Wenn ja dann musst du die border-Prop auf true setzen und neu zeichnen lassen. Beim Zeichnen der Bilder musst du dann eben drauf achten ob um das Bild noch ein Rand gezeichnet werden soll (border-Prop auf true).
Das selbe kannst du für die klick-Funktion machen

Einfacher würde es sein, wenn du die Bilder in einem JLabel darstellst. Dann könntest du den JLabel einfach ein MouseListener und ein Border geben.
 

cool_brivk24

Mitglied
Zeichnest du die Bilder direkt? Dann müsstest du dir wahrscheinlich eine Struktur ausdenken, die sowohl das Bild als auch die Koordinaten des Bildes abspeichert und eventuell noch eine Property die angibt, ob das Bild einen Border haben soll. Dann kannst du dir eine boolean intersects(Point) Methode schreiben die schaut, ob der angegebene Punkt innerhalb der Bild-Koordinaten liegt. Deinem JPanel kannst du dann einen MouseListener geben, wo du eben durch die Liste iterierst und schaust ob intersects(mousePos) true zurück gibt. Wenn ja dann musst du die border-Prop auf true setzen und neu zeichnen lassen. Beim Zeichnen der Bilder musst du dann eben drauf achten ob um das Bild noch ein Rand gezeichnet werden soll (border-Prop auf true).
Das selbe kannst du für die klick-Funktion machen

Ich Zeichne die Bilder direkt. Nur ich versetehe leider nicht so ganz wie und was du meinst. Ich bin leider nicht sooooo erfahren.

mfg
 

Robat

Top Contributor
Beispielhaft könnte das ganze so aussehen.
Java:
public class BorderedImage {

    private BufferedImage image;
    private Rectangle bounds;

    private boolean isHovered;
    private boolean isClicked;


    public BorderedImage(int x, int y, BufferedImage image) {
        this.image = image;
        this.bounds = new Rectangle(x, y, image.getWidth(), image.getHeight());
    }
    // Getter & Setter ...
}


public class ImagePanel extends JPanel {
    private List<BorderedImage> images;

    public ImagePanel() {
        this.images = new ArrayList<>();
        addListener();
        loadDummyData();
    }

    private void loadDummyData() { ... }

    private void addListener() {
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                images.forEach(image -> image.setClicked(image.intersects(e.getPoint())));
                repaint();
            }
        });
        addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseMoved(MouseEvent e) {
                images.forEach(image -> image.setHovered(image.intersects(e.getPoint())));
                repaint();
            }
        });
    }
   @Override
   protected void paintComponent(Graphics g) {
       super.paintComponent(g);
       images.forEach(image -> {
           if (image.isHovered()) {
               drawBackgroundRectangle(g, image, Color.BLUE);
           }
           if (image.isClicked()) {
               drawBackgroundRectangle(g, image, Color.RED);
           }
           g.drawImage(image.getImage(), image.getX(), image.getY(), null);
       });
   }

   private void drawBackgroundRectangle(Graphics g, BorderedImage image, Color color) {
       g.setColor(color);
       g.drawRect(image.getX() - 1, image.getY() - 1, image.getWidth() + 2, image.getHeight() + 2);
   }

}
 

Robat

Top Contributor
Das was der Name sagt. Daten zum testen. Ist aber irrelevant für dich weil du lädst ja die Bilder irgendwo.
 

mihe7

Top Contributor
OT: @cool_brivk24 würde es Dich stören, wenn Du die CODE-Tags aus der Signatur entfernst? Das ist fürchterlich anstrengend einen Thread zu überfliegen, wenn man ständig durch einen Code-Block irritiert wird. Und wie Du weißt, führt das bekanntermaßen zu Augenkrebs ;)
 
X

Xyz1

Gast
Genau! Und nur die Wenigsten können aus dem Ergebnis die Schritte dahin ableiten....
Soll heißen - wer nicht weiß wie man fischt dem nützt es nichts einen dicken Karpfen hinzu legen....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Unterscheiden ob ein Graphics-Objekt von einer JComponent oder einem BufferedImage kommt..? AWT, Swing, JavaFX & SWT 4
I Arbeitsspeicherverbrauch BufferedImage.TYPE_INT_RGB vs. TYPE_3BYTE_BGR AWT, Swing, JavaFX & SWT 6
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
L AWT Ändern der Farbe eines BufferedImage mit Farbähnlichkeit AWT, Swing, JavaFX & SWT 5
I GEmaltes BufferedImage löschen AWT, Swing, JavaFX & SWT 3
cool_brivk24 AWT BufferedImage wird nicht geladen AWT, Swing, JavaFX & SWT 17
J linken Bildausschnitt eines BufferedImage abschneiden AWT, Swing, JavaFX & SWT 4
Zar von Domarus JFrame zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 3
S 2D-Grafik User-BufferedImage rotieren im Zentrum und ohne "anpassung" AWT, Swing, JavaFX & SWT 2
C Pixel-Rendering/Animation Performance in BufferedImage AWT, Swing, JavaFX & SWT 1
H Swing BufferedImage zeichnen AWT, Swing, JavaFX & SWT 1
C Swing BufferedImage zeichnen und JLabels setzen. AWT, Swing, JavaFX & SWT 17
G Subimage von BufferedImage speichern AWT, Swing, JavaFX & SWT 4
D JPanel Graphic2D als BufferedImage Speichern AWT, Swing, JavaFX & SWT 5
D BufferedImage -> Feature Extraktion. Unterschiedliche BufferedImage imageTypes problem AWT, Swing, JavaFX & SWT 4
I 2D-Grafik Shape aus BufferedImage "löschen" AWT, Swing, JavaFX & SWT 2
M 2D-Grafik LookupOp Operation auf BufferedImage AWT, Swing, JavaFX & SWT 7
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
P BufferedImage schlechte Qualität beim Abspeichern AWT, Swing, JavaFX & SWT 9
S BufferedImage als schwarz-weiß-Bild AWT, Swing, JavaFX & SWT 3
Luk10 BufferedImage[...].getData() vs BufferedImage.setRGB() AWT, Swing, JavaFX & SWT 2
D Schnelles kopieren von Pixeln in ein BufferedImage AWT, Swing, JavaFX & SWT 25
J Flackern wie mit BufferedImage beheben AWT, Swing, JavaFX & SWT 4
N Swing BufferedImage neu laden AWT, Swing, JavaFX & SWT 10
N 2D-Grafik BufferedImage, Line2D, Swing und die Probleme AWT, Swing, JavaFX & SWT 5
Luk10 BufferedImage auf ein anderes BufferedImage zeichnen AWT, Swing, JavaFX & SWT 6
P BufferedImage auf JPanel AWT, Swing, JavaFX & SWT 11
K 2D-Grafik BufferedImage eingelesen, welches Modell?! AWT, Swing, JavaFX & SWT 2
T BufferedImage bei paintComponent AWT, Swing, JavaFX & SWT 6
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
0x7F800000 2D-Grafik int[] zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 27
H 2D-Grafik BufferedImage aus Integer-Array AWT, Swing, JavaFX & SWT 3
Luk10 2D-Grafik BufferedImage sauber rotieren AWT, Swing, JavaFX & SWT 16
P Image mehrfach in ein BufferedImage zeichnen AWT, Swing, JavaFX & SWT 7
A BufferedImage nach dem Speichern immer schwarz AWT, Swing, JavaFX & SWT 8
J Bild aus Datei in BufferedImage laden AWT, Swing, JavaFX & SWT 4
E BufferedImage Alphaknal ein- und ausblenden AWT, Swing, JavaFX & SWT 7
N BufferedImage zeichnen AWT, Swing, JavaFX & SWT 4
D BufferedImage Größe skalieren AWT, Swing, JavaFX & SWT 2
P Swing Vom BufferedImage bei paintComponent nur soviel zeichnen, wie nötig AWT, Swing, JavaFX & SWT 3
B 2D-Grafik BufferedImage Performance AWT, Swing, JavaFX & SWT 3
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
E AWT RenderedImage aus BufferedImage erzeugen, um Bild abzuspeichern? AWT, Swing, JavaFX & SWT 4
A 2D-Grafik BufferedImage wird nicht eingezeichnet AWT, Swing, JavaFX & SWT 3
G 2D-Grafik BufferedImage Hintergrund immer schwarz AWT, Swing, JavaFX & SWT 4
Developer_X Swing Auf ein BufferedImage mit Graphics/Graphics2D zeichnen AWT, Swing, JavaFX & SWT 6
J AWT BufferedImage to 2DArray AWT, Swing, JavaFX & SWT 10
R Bild drehen UND skalieren (Image bzw BufferedImage) AWT, Swing, JavaFX & SWT 5
J JPanel in Bufferedimage AWT, Swing, JavaFX & SWT 3
1 BufferedImage in byte[], dann in String und zurück AWT, Swing, JavaFX & SWT 7
J Swing paintComponent() - repaint() - BufferedImage anzeigen AWT, Swing, JavaFX & SWT 5
C BufferedImage-Fehler? Falsches Bild wir gezeichnet AWT, Swing, JavaFX & SWT 5
B BufferedImage Builder AWT, Swing, JavaFX & SWT 15
F Transparentes BufferedImage über BufferedImage AWT, Swing, JavaFX & SWT 12
F Größe von BufferedImage ändern AWT, Swing, JavaFX & SWT 27
I Swing JComponent als BufferedImage speichern AWT, Swing, JavaFX & SWT 18
Dragonfire Swing Zoom-Vorgang optimieren [BufferedImage] AWT, Swing, JavaFX & SWT 2
2 Memory Leak mit BufferedImage !! AWT, Swing, JavaFX & SWT 15
X BufferedImage maximiert in JFrame anzeigen? AWT, Swing, JavaFX & SWT 2
R JPanel - BufferedImage - zeichnen großer Bilder AWT, Swing, JavaFX & SWT 2
R JTable - TableCellRenderer - BufferedImage AWT, Swing, JavaFX & SWT 9
D BufferedImage und Graphics2D AWT, Swing, JavaFX & SWT 3
R Zeichnen von Zahlen in BufferedImage AWT, Swing, JavaFX & SWT 6
G BufferedImage.getRGB() mit 3 int-Werten vergleichen AWT, Swing, JavaFX & SWT 2
Luma BufferedImage wird nicht gezeichnet AWT, Swing, JavaFX & SWT 3
G keine ScaledInstance von BufferedImage? AWT, Swing, JavaFX & SWT 6
S BufferedImage & Scaling: Altes Problem im neuen Gewand AWT, Swing, JavaFX & SWT 2
G zu viele/große BufferedImage führt zu Java heap space AWT, Swing, JavaFX & SWT 5
G BufferedImage und jpg --> maximale Qualität AWT, Swing, JavaFX & SWT 9
F HTML Text irgendwie auf BufferedImage bringen AWT, Swing, JavaFX & SWT 3
R BufferedImage Problem AWT, Swing, JavaFX & SWT 2
G Problem mit BufferedImage und imageIO AWT, Swing, JavaFX & SWT 2
S BufferedImage drehen AWT, Swing, JavaFX & SWT 3
? ActionListener auf BufferedImage AWT, Swing, JavaFX & SWT 11
M BufferedImage mit html interpretierten String beschriften AWT, Swing, JavaFX & SWT 3
A Probelme mit großen BufferedImage in paintComponent AWT, Swing, JavaFX & SWT 7
B Farbtiefe eines BufferedImage verringern AWT, Swing, JavaFX & SWT 3
F ImageIcon -> BufferedImage AWT, Swing, JavaFX & SWT 2
T Performance Problem bei BufferedImage AWT, Swing, JavaFX & SWT 3
F Animiertes Gif als BufferedImage AWT, Swing, JavaFX & SWT 10
L Anzeigen von fotos: ImageIcon oder BufferedImage + paint() ? AWT, Swing, JavaFX & SWT 5
C Rotate BufferedImage --> Bild unvollständig AWT, Swing, JavaFX & SWT 5
U Streifen hinter bewegtem BufferedImage AWT, Swing, JavaFX & SWT 13
M BufferedImage skalieren AWT, Swing, JavaFX & SWT 6
T BufferedImage verkleinern Resultat ist zu pixelig. AWT, Swing, JavaFX & SWT 6
G Image Object speichern oder in ein BufferedImage umwandeln AWT, Swing, JavaFX & SWT 2
P Problem beim Zeichnen auf ein BufferedImage AWT, Swing, JavaFX & SWT 4
B BufferedImage aus einer Datei AWT, Swing, JavaFX & SWT 4
C Farben in BufferedImage ändern ? AWT, Swing, JavaFX & SWT 2
J Image to BufferedImage AWT, Swing, JavaFX & SWT 5
T BufferedImage kopieren AWT, Swing, JavaFX & SWT 3
T BufferedImage Farbe "Transparent" AWT, Swing, JavaFX & SWT 21
T BufferedImage + bestimmten bereich ausfüllen AWT, Swing, JavaFX & SWT 3
M BufferedImage Größe? AWT, Swing, JavaFX & SWT 10
U Löschen eines BufferedImage AWT, Swing, JavaFX & SWT 7
J Image aus BufferedImage ohne AWT AWT, Swing, JavaFX & SWT 5
V Image in BufferedImage AWT, Swing, JavaFX & SWT 3
J BufferedImage aus byte-Array erstellen AWT, Swing, JavaFX & SWT 3
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben