根本不会画任何想法? 后面板上没有显示任何内容,如何使用mouseDragged事件进行绘制?
我甚至无法显示单行...这是源代码..我添加了Jbutton只是为了查看Panel是否实际显示
public class pinta extends JFrame {
HandlerClass handler=new HandlerClass();
JPanel back=new JPanel();
public pinta(){
setSize(500,500);
setResizable(true);
getContentPane().setLayout(new BorderLayout());
back.setBackground(Color.white);
back.setSize(500,500);
this.add(back);
back.add(new JButton("test"));
back.addMouseMotionListener(handler);
back.setOpaque(true);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paintComponent(Graphics g){
super.paintComponents(g);
g.setColor(Color.black);
Graphics2D g2d = (Graphics2D)g;
g2d.fillOval(100, 100, 20, 10);
g2d.setPaintMode();
g2d.setStroke(new BasicStroke(1));
}
public class HandlerClass implements MouseMotionListener{
int x, y;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public void mouseDragged(MouseEvent e) {
x=e.getX();
y=e.getY();
}
public void mouseEntered(MouseEvent e){
}
public void mouseMoved(MouseEvent e) {
}
}
}
答案 0 :(得分:3)
JFrame
没有方法调用paintComponent
。如果您使用@Override
注释,则编译器将失败。
另请注意,您正在呼叫super.paintComponents
- 请注意最后的“s”,这应该是问题的交互者
JComponent
(或JPanel
延伸JComponent
)就是您所追求的目标。
请查看Performing Custom Painting了解详情
我还应该提到back.setSize(500,500)
是无关紧要的,因为布局管理器将决定它想要制作组件的大小