JLabel上に表示した画像のクリックした位置の色を取得する
Total: 2186
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JLabel
にIcon
として画像を表示し、その画像をマウスでクリックした位置の色を取得します。
Screenshot
Advertisement
サンプルコード
JLabel label = new JLabel(new ImageIcon(image));
label.addMouseListener(new MouseAdapter() {
@Override public void mousePressed(MouseEvent e) {
updateViewRect(label);
Point pt = e.getPoint();
if (iconRect.contains(pt)) {
int argb = image.getRGB(pt.x - iconRect.x, pt.y - iconRect.y);
field.setText(String.format("#%06X", argb & 0x00_FF_FF_FF));
sample.setIcon(new ColorIcon(new Color(argb, true)));
}
}
});
View in GitHub: Java, Kotlin解説
ImageIO.read(...)
で画像ファイルをBufferedImage
として読み込むJLabel
にnew ImageIcon(BufferedImage)
で作成したIcon
を設定JLabel
にMouseListener
を追加してマウスクリック位置を取得JLabel
内のIcon
表示領域をSwingUtilities.layoutCompoundLabel(...)
で更新JLabel
上のマウスクリック位置をIcon(BufferedImage)
の座標に変換し、BufferedImage#getRGB(...)
メソッドで整数型ピクセル値で色を取得- 取得した色から
Icon
を生成してサンプル表示用のJLabel
に設定 - 取得した色を
16
進数カラーコードの6
桁文字列に変換してJTextField
に設定
- 取得した色から