Ich versuche eine Klasse zu erstellen, die einen weiteren JComponent hinzufügen kann und ein anklickbares Einstellungs-Icon in der oberen rechten Ecke erstellt.Wie kann ich einen Mausklick in einem JPanel nur in einem bestimmten Bereich erfassen?
Ich möchte eine Art von ActionListener hinzufügen, die ausgelöst wird, wenn der Benutzer auf den Bereich der g.drawImage(image, getWidth() - widgetSize, 0, widgetSize, widgetSize, imageObserver)
klickt.
Ist dies der richtige Weg, um dieses Problem zu lösen? Oder gibt es bessere Möglichkeiten dafür?
package de.display;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class JWidget extends JPanel {
private int widgetSize = 50;
private boolean showWidgetIcon = true;
Image image;
ImageObserver imageObserver;
public JWidget() {
this(new ImageIcon("src/main/resources/Icon-Settings.png"));
}
public JWidget(String filename) {
super();
ImageIcon icon = new ImageIcon(filename);
image = icon.getImage();
imageObserver = icon.getImageObserver();
}
public JWidget(ImageIcon icon){
super();
image = icon.getImage();
imageObserver = icon.getImageObserver();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if(showWidgetIcon)
{
g.drawImage(image, getWidth() - widgetSize, 0, widgetSize, widgetSize, imageObserver);
}
}
public int getWidgetSize() {
return widgetSize;
}
public void setWidgetSize(int widgetSize) {
this.widgetSize = widgetSize;
}
public void setImageIcon(ImageIcon icon) {
image = icon.getImage();
imageObserver = icon.getImageObserver();
}
public boolean isWidgetIconVisible() {
return showWidgetIcon;
}
public void setShowWidgetVisibility(boolean showWidgetIcon) {
this.showWidgetIcon = showWidgetIcon;
}
public void addPressSettingsActionListener(ActionListener actionListener)
{
listenerList.add(ActionListener.class, actionListener);
}
}
hinzufügen 'MouseListener'. Das ['MouseEvent'] (http://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html) enthält alle notwendigen Details. –
'new ImageIcon (" src/main/resources/Icon-Settings.png ")' Anwendungsressourcen werden zum Zeitpunkt der Bereitstellung zu eingebetteten Ressourcen. Daher ist es ratsam, sofort auf sie zuzugreifen, als ob sie gerade wären. Auf ein [tag: embedded-resource] muss nicht die Datei, sondern die URL zugreifen. Siehe [Info. Seite für eingebettete Ressource] (http://stackoverflow.com/tags/embedded-resource/info) zum Erstellen der URL. –