別のJComponnentを追加して、右上のコーナーにクリック可能な設定アイコンを作成できるクラスを作成しようとしました。指定された領域だけJPanelのマウスクリックをどのように再編集できますか?
ユーザーがg.drawImage(image, getWidth() - widgetSize, 0, widgetSize, widgetSize, imageObserver)
の領域をクリックしたときに発生する何らかのActionListenerを追加するのが好きです。
これはこの問題を解決する正しい方法ですか?それとももっと良い方法がありますか?
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);
}
}
'MouseListener'を追加しています。 ['MouseEvent'](http://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html)には、必要なすべての詳細が含まれています。 –
'new ImageIcon(" src/main/resources/Icon-Settings.png ")'アプリケーションリソースは、デプロイ時に埋め込まれたリソースになるので、今のようにアクセスすることをお勧めします。 [タグ:埋め込みリソース]は、ファイルではなくURLでアクセスする必要があります。 [info。埋め込みリソースのページ](http://stackoverflow.com/tags/embedded-resource/info)を参照してください。 –