Java为什么用Graphics画图不起作用?
下面的Graphics有内容,但是为什么就是不能画出图形?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DrawPanel extends JFrame{
public static void main(String[] args) {
new DrawPanel();
}
public DrawPanel() {
setTitle("我的第一个窗口");
setSize(600,600);
setResizable(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
createDP();
}
private JPanel panel;
private Point prevPoint;
private Color color;
private int Thickness=10;
private void createDP(){
JPanel tools=new JPanel();
Container cont=getContentPane();
cont.setLayout(null);
panel=new JPanel();
panel.setBackground(Color.BLUE);
panel.setBounds(10, 100, 400, 400);
//第一种
final Graphics2D g=(Graphics2D)createImage(300,300).getGraphics();
//第二种
// BufferedImage buffImg=new BufferedImage(300,300,BufferedImage.TYPE_INT_ARGB);
// final Graphics2D g=(Graphics2D)buffImg.createGraphics();
panel.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
prevPoint=e.getPoint();
g.setColor(Color.RED);
g.fillOval(prevPoint.x, prevPoint.y, Thickness, Thickness);
}
});
panel.addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e){
}
});
cont.add(tools,BorderLayout.NORTH);
cont.add(panel);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你确认你这段代码能编译过? main里的new DrawPanel()显然有错误。。DrawPanel是function,不是class。
既然你需要在
panel
上绘图,那么每次绘图就应该获得panel
的画笔才对: