Swing/ColorPicker のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ColorPicker へ行く。
- 1 (2021-07-05 (月) 03:04:42)
- category: swing folder: ColorPicker title: JLabel上に表示した画像のクリックした位置の色を取得する tags: [JLabel, ImageIcon, MouseListener, Graphics] author: aterai pubdate: 2021-07-05T03:02:53+09:00 description: JLabelにIconとして画像を表示し、その画像をマウスでクリックした位置の色を取得します。 image: https://drive.google.com/uc?id=1Q-RhXizUQcuAu_FPuY4zPAwSVpeGHsnk
概要
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
に設定
- 取得した色から