Java Can';不要直接在框架上涂漆
我的任务是用Java创建一个绘画程序。我成功地创造了一些东西,但并不完全是我想要的 我的问题是,我无法根据IDE提供的选项在IDE(NetBeans 7.0.1)中创建JFrame,也无法正确调用paint类 更具体地说,我想从一个面板(例如Panel1)上按下一个按钮,然后在同一个框架中的Panel2中进行绘制 这就是我们班的使命:Java Can';不要直接在框架上涂漆,java,swing,paint,Java,Swing,Paint,我的任务是用Java创建一个绘画程序。我成功地创造了一些东西,但并不完全是我想要的 我的问题是,我无法根据IDE提供的选项在IDE(NetBeans 7.0.1)中创建JFrame,也无法正确调用paint类 更具体地说,我想从一个面板(例如Panel1)上按下一个按钮,然后在同一个框架中的Panel2中进行绘制 这就是我们班的使命: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
PaintFlower102 f = new PaintFlower102();
}
课堂部分:
super("Drag to Paint");
getContentPane().add(new Label ("Click and Drag"),BorderLayout.SOUTH);
// add(new JButton("Brush 20"),BorderLayout.NORTH);
addMouseMotionListener( new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent event) {
xval=event.getX();
yval=event.getY();
repaint();
}
});
setSize(500, 500);
setVisible(true);
setDefaultCloseOperation(PaintFlower102.DISPOSE_ON_CLOSE);
}
public void paint(Graphics g) {
g.fillOval(xval, yval, 10, 10);
}
问题是,如果我不将extend JFrame
放在类中,这将不起作用。如果我这样做,它会创建一个新的框架,我可以在其中画画。建议:
- 永远不要直接在JFrame中画画,除非在极少数绝对需要的情况下(这不是其中之一)
- 相反,使用JPanel或JComponent或JComponent的其他衍生物进行绘制
- 在类的
方法中绘制,而不是在paintComponent(Graphics g)
中绘制Paint(Graphics g)
- 请阅读关于这方面的Java教程,因为这些教程都解释得很好。退房并离开
public void paintComponent(Graphics g) {
super.paintComponent(g);
// Draw Oval
g.fillOval(xval, yval, 10, 10);
}
作业和家庭作业一样吗?请添加更多的代码,这是非常不够的,以允许任何合理的建议。感谢您的答复。但是如果我不必在JFrame中绘制,而是在JPanel上绘制,那么当我从IDE创建JFrame和面板时,我将如何从面板调用paint方法。我希望你能理解我的问题。例如,如果我按下一个按钮,我应该添加一个调用该方法的eventlistener?@Leonidas:您从来不会直接调用paint或paintcomponent方法。相反,如果希望调用方法重写,可以创建方法重写并调用
repaint()
。此外,还有一些方法可以告诉IDE您想要重写超类的方法,这就是您应该做的。我自己并不使用NetBeans,而是手工编写Swing GUI。