私はJFrameを使ってイメージをインポートして表示し、マウスのクリックを検出するためにmousemotionlistenerを使用しました。イメージの上に描画したいと考えています。ユーザーがクリックして画像の残りの部分を保存しながらそのピクセルを特定の色にすることができるようにしたいと思いますが、画像の残りの部分を削除せずにGraphicsを使用する方法を見つけることができませんでしたまたは新しいウィンドウを開く。Javaでイメージの上に描画する方法は?
public class Simple extends JFrame{
static ImageIcon icon;
static JFrame myframe;
static JLabel mylabel;
static BufferedImage image = null;
public static void main(String[] args) {
try{
image = ImageIO.read(new File("mypic.png"));
}
catch (IOException e) {
e.printStackTrace();
}
icon=new ImageIcon(image);
myframe=new JFrame();
myframe.setSize(200,200);
myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mylabel=new JLabel();
mylabel.setIcon(icon);
myframe.getContentPane().add(mylabel);
myframe.pack();
Container container = myframe.getContentPane();
MouseMotionEvents3 mousemotion = new MouseMotionEvents3();
container.add(mousemotion);
myframe.setVisible(true);
while(1 == 1) {
if(mousemotion.signal == true) {
System.out.println("second message");
mousemotion.signal = false;
}
}
}
}
class MouseMotionEvents3 extends JPanel implements MouseListener,
MouseMotionListener {
public boolean signal;
public MouseMotionEvents3() {
addMouseListener(this);
addMouseMotionListener(this);
signal = false;
}
public void mouseClicked(MouseEvent me) {
// System.out.println("i hate you");
}
public void mouseEntered(MouseEvent me) {
}
public void mouseExited(MouseEvent me) {
}
public void mousePressed(MouseEvent me) {
signal = true;
System.out.println("message");
}
public void mouseReleased(MouseEvent me) {
}
public void mouseDragged(MouseEvent me) {
}
public void mouseMoved(MouseEvent me) {
}
}
を利用します。//docs.oracl e/javase/tutorial/uiswing/painting /)と[2D graphics trail](https://docs.oracle.com/javase/tutorial/2d/) – MadProgrammer
@MadProgrammer OPは、それは彼らがそのリンクに従わなかったこと、またはその内容を理解していることを明確に示しています。 :(OP:私は画像に直接描画します。それは永続的で、コードは変更を表示するために画像を表示するコンポーネント( 'mylabel')を' repaint() 'する必要があります –
@AndrewThompson私は、 P – MadProgrammer