use*_*233 0 java swing repaint paintcomponent
我有一个Java绘图程序,它使用自定义JPanel进行绘制.当点击JPanel时会画一个小椭圆(或圆圈,如果你愿意的话),每当你点击另一个地方时,椭圆会消失.坐标也会更新,但椭圆不会停留,它会移动到用户点击下一个位置...这是自定义JPanel的代码:
int xCord, yCord;
public class PaintPanel extends JPanel implements MouseListener {
// default serial whatever...
private static final long serialVersionUID = -6514297510194472060L;
// initial values
int xCord = -10;
int yCord = -10;
public PaintPanel() {
addMouseListener(this);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(ProgramUI.currentColor);
g.fillOval(xCord, yCord, 8, 8);
repaint();
}
@Override
public void mouseClicked(MouseEvent m) {
}
@Override
public void mouseEntered(MouseEvent m) {
}
@Override
public void mouseExited(MouseEvent m) {
}
@Override
public void mousePressed(MouseEvent m) {
if (paintPanel.contains(m.getPoint())) {
xCord = m.getX();
yCord = m.getY();
System.out.println("x: " + xCord + " y: " + yCord);
}
}
@Override
public void mouseReleased(MouseEvent m) {
}
}
Run Code Online (Sandbox Code Playgroud)
我需要握住鼠标来连续画椭圆形,直到鼠标按钮松开.这里唯一的问题是鼠标椭圆更新,但不保存它的原始位置.我该如何解决?
只fillOval绘制了一个椭圆,因为在paintComponent方法中只有一个语句绘制一个椭圆,因此声明
super.paintComponent(g);
Run Code Online (Sandbox Code Playgroud)
导致任何先前的绘画在被repaint调用时被清除.
要绘制多个椭圆,您可以从自定义绘画方法中List<Point>概述的绘制组件
不要repaint从内部打电话paintComponent.这会产生无限循环并降低性能.如果需要定期更新调用repaint从ActionListener一个的摇摆定时器来代替.
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |