【发布时间】:2019-04-26 11:46:56
【问题描述】:
在我的主类中,我有以下代码从我的机器加载图像并将其显示在框架上以在其上绘制东西:
public class ShowMap extends JPanel {
private static final int WIDTH = 1340;
private static final int HEIGHT = 613;
public void main(String args[]) {
JFrame frame = new JFrame("MAP");
frame.setPreferredSize(new Dimension(WIDTH, HEIGHT));
frame.setMinimumSize(new Dimension(WIDTH, HEIGHT));
frame.setMaximumSize(new Dimension(WIDTH, HEIGHT));
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = (JPanel)frame.getContentPane();
JLabel label = new JLabel();
label.setIcon(new ImageIcon("map.png"));
panel.add(label);
}
}
我正在加载的图像是一张地图,我想通过在正确的坐标中绘制点来指示某些对象的位置。因此,在这里向DrawPoint 类(如下)指示什么坐标应该得到该点很重要。
另外,我非常感谢您解释如何擦除已绘制的点。
我的搜索将我带到以下内容,但是一旦我将int coordx, int coordy 添加到方法的参数中,它就不再突出显示,并且我不知道如何在传递时在ShowMap 中调用此方法坐标作为参数。
public class DrawPoint extends JPanel {
private int coordx;
private int coordy;
public void paintComponent(Graphics g, int coordx, int coordy){
g.setColor(Color.BLACK);
g.fillOval(coordx,coordy,8,8);
}
}
【问题讨论】:
-
首先,你不能——也不应该。 Paint 应该绘制组件的当前状态,这意味着您应该更改组件的状态变量,然后调用 repaint。其次,您只需调用 super.paintComponent,它会清除上下文,以便您可以再次在其上绘画
标签: java swing graphics awt custom-painting