2

わかりましたので、過去 26 時間、ガイドとオンライン ヘルプを使用してこれを理解しようとしましたが、成功しませんでした。

私がしたいのは、ユーザーが PaintPanel をクリックしたときに楕円形を描くことだけです 眠れるように誰か助けてください :P

画面

PaintApplet クラス:

  private void PaintPanelMouseClicked(java.awt.event.MouseEvent evt) {                                        
    // TODO add your handling code here:
    if(FillRadioButton.isSelected())
    {
    PaintPanel.setBackground(JColor.getColor());
   PaintPanel.repaint();
    }
    if(BrushRadioButton.isSelected())
    {
         Point ComponentPoint = PaintPanel.getLocationOnScreen();
         PaintPanel.add(new Painter(ComponentPoint));
    }
}           

ペインタークラス:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
 import java.awt.*;

public class Painter extends JPanel{

Point  Component;

public Painter(Point Com)
{
    Component = Com;
}

public void paintComponent(Graphics g) 
{

        super.paint(g);
      Point CursorPoint=   MouseInfo.getPointerInfo().getLocation(); //gets cursorpoint

       int ComPX =  Component.x;
        int ComPY =  Component.y;
        int CurPX =  CursorPoint.x;
        int CurPY =  CursorPoint.y;
        int FinalX = CurPX - ComPX;
        int FinalY =  CurPY - ComPY;

       g.drawOval(FinalX, FinalY, 20, 20);




}
}
4

1 に答える 1

4

電話しないで

super.paint(g);

以内にpaintComponent。これにより、ペイント チェーン メカニズムで無限ループが発生します。代わりに必要です

super.paintComponent(g);

より良いヘルプが必要な場合は、SSCCEの投稿を検討してください

于 2013-03-24T18:30:28.400 に答える