0

我有一个任务是用 Java 创建一个绘图程序。我设法创造了一些东西,但并不完全是我想要的。

我的问题是我无法根据 IDE 提供的选项在我的 IDE(NetBeans 7.0.1)中创建 JFrame,并正确调用绘制类。

更具体地说,我想从一个面板(例如 Panel1)中按下一个按钮并在同一帧中的 Panel2 中绘画。

那是班级的召唤:

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放在课堂上,这是行不通的。如果我这样做,它会创建一个我可以在其中绘制的新框架。

4

2 回答 2

7

建议:

  • 除非在绝对需要的极少数情况下(这不是其中之一),否则不要直接在 JFrame 中绘制。
  • 而是在 JPanel 或 JComponent 或 JComponent 的其他衍生物中进行绘制。
  • 在类的方法中绘制paintComponent(Graphics g),而不是在paint(Graphics g).
  • 阅读有关这方面的 Java 教程,因为它在那里得到了很好的解释。查看Trail:2D 图形执行自定义绘画
于 2012-04-24T15:51:33.917 回答
0

我可能是错的,但我认为你需要包含 super.paintComponent(g),并像 Hovercraft Full Of Eels 所说的那样覆盖 paintComponent 方法。

public void paintComponent(Graphics g) {
    super.paintComponent(g);       

    // Draw Oval
   g.fillOval(xval, yval, 10, 10);
}  
于 2012-04-25T23:24:12.980 回答