【发布时间】:2014-03-07 21:45:19
【问题描述】:
我在JPanel 上画一个点有问题。我想指出她的立场。
因为在面板上我加载了一张图片。对于每次点击按钮,我都会在面板上添加点。
但我没有出现在面板上。
文件simpleIHM:
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class simpleIHM extends JFrame{
JPanel JpLeft = new JPanel();
JPanel JpRight = new JPanel();
JButton btn1 = new JButton("Show");
JLabel msgX = new JLabel("X :");
JLabel msgY = new JLabel("Y :");
JTextField textX = new JTextField(5);
JTextField textY = new JTextField(5);
public static int x,y = 0;
JLabel img = null;
BufferedImage image;
public simpleIHM(){
img = new JLabel(new ImageIcon("Centre.png"));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
JpLeft.add(img);
PanelIMG imgPanel = new PanelIMG();
JpLeft.add(imgPanel);
getContentPane().add(JpLeft, BorderLayout.WEST);
JpRight.add(msgX);
JpRight.add(textX);
JpRight.add(msgY);
JpRight.add(textY);
JpRight.add(btn1);
JpRight.setLayout(new GridLayout(3, 2));
getContentPane().add(JpRight, BorderLayout.EAST);
pack();
setVisible(true);
showIMG("./Centre.png");
//!!
btn1.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
System.out.println("CLICK!");
x = Integer.parseInt(textX.getText());
y = Integer.parseInt(textY.getText());
System.out.println("X "+x+ "| Y "+y); img.repaint();
}
});
}
public void showIMG(String test){
try
{
File input = new File("Centre.png");
image = ImageIO.read(input);
}
catch (IOException ie)
{
System.out.println("Error:" + ie.getMessage());
}
}
public static void main(String [ ] arg) {
simpleIHM IHM = new simpleIHM();
}
}
文件面板IMG
import javax.swing.JPanel;
import java.awt.*;
import javax.swing.*;
public class PanelIMG extends JPanel{
public PanelIMG()
{
}
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawOval(simpleIHM.x, simpleIHM.y, 5, 5);
System.out.println("Paint Component");
}
}
提前致谢
【问题讨论】:
-
如果我没有误解的话,你正试图用新的 X 和 Y 坐标重新绘制 JLabel,当你点击 JButton 时,新坐标将是鼠标所在的位置点击那个按钮,我错了吗?
-
是的,它是正确的。但是带有新坐标的点出现在图片上。每次点击按钮,图片上都有一个新坐标点。
-
1) 为了尽快获得更好的帮助,请发布MCTaRE(最小完整测试和可读示例)。 2) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。 3) 例如,获取图像的一种方法是热链接到this answer 中看到的图像。
标签: java image swing jpanel paintcomponent