2014-12-20 31 views
-2

我修改了代碼 和相同的輸出沒有圈當我點擊鼠標繪製圓塔的位置我點擊不起作用

    public class gui extends JFrame{ 
       Scanner scan = new Scanner(System.in); 
       private final JPanel mousepanal; 
         private final JLabel stutespar ; 



      int x=0; 
      int y=0; 



        public gui() { 
        super("title"); 
         mousepanal = new JPanel(); 

         mousepanal.setBackground(Color.WHITE); 
         add(mousepanal,BorderLayout.CENTER); 
        add(edffnmlsdfkj,BorderLayout.WEST); 
         stutespar = new JLabel(); 
         add(stutespar,BorderLayout.SOUTH); 
         Handlerclass handler = new Handlerclass(); 
         Paintcir p = new Paintcir(); 
         mousepanal.addMouseListener(handler); 
         mousepanal.addMouseMotionListener(handler); 


        } 

///////////// //////////////

 private class Handlerclass extends JPanel implements      MouseListener,MouseMotionListener{ 

    @Override 
    public void mouseClicked(MouseEvent e) { 
     stutespar.setText(String.format("clicked at %d %d",e.getX(),e.getY())); 


      x=e.getX(); 
      y=e.getY(); 

如何調用重繪()?

repaint(); 

    } 

/////////////////////// //////////////////

@Override 
    public void mousePressed(MouseEvent e) { 
    stutespar.setText("you bress mouse"); 


    } 

    @Override 
    public void mouseReleased(MouseEvent e) { 

     stutespar.setText("mouse realse"); 
    } 

    @Override 
    public void mouseEntered(MouseEvent e) { 
     stutespar.setText("you entered the mouse"); 
    // mousepanal.setBackground(Color.RED); 
    } 

    @Override 
    public void mouseExited(MouseEvent e) { 
     stutespar.setText("exsitd"); 
    // mousepanal.setBackground(Color.WHITE); 

    } 

    @Override 
    public void mouseDragged(MouseEvent e) { 
     stutespar.setText("dragged"); 
    } 

    @Override 
    public void mouseMoved(MouseEvent e) { 
     stutespar.setText("moved"); 
    } 

///////////////////////// /////////////////

      @Override 
          public void paintComponent(Graphics g) { 
        super.paintComponents(g); 
        this.setBackground(Color.yellow); 
        g.setColor(Color.green); 

      g.fillOval(x, y, 40, 40); 
     //  g.fillOval(x+50, y+100, 40, 40); 
       } 





       } 
       } 

這是主類

   public class Main extends JFrame { 
       public static void main(String[] args) { 

       gui g = new gui(); 
       g.setDefaultCloseOperation(EXIT_ON_CLOSE); 
        g.setSize(500,500); 
        g.setVisible(true); 





         } 
       } 
+0

也許你可以給任何錯誤?你期待什麼作爲輸出? – Bono

+0

輸出是我創建框架 當我點擊.. 沒有任何反應 –

+0

x = e.getX(); y = e.getY(); x和y沒有被使用只是說 – Thellimist

回答

0

一些問題:

  1. 您應該使用沒有「s」的super.paintComponent(...)

  2. 但是,在這種情況下,它並不重要,因爲JFrame沒有paintComponent()方法。您應該始終在方法之前使用@Override以確保實際上覆蓋了該類的一個方法。

當你這樣做的風俗畫:

  1. 你重寫JPanel的的paintComponent()方法和麪板添加到一個框架。

  2. MouseListener應該在您的自定義面板類中定義。

  3. 你需要調用重繪鼠標事件

    ()這樣的組件可以重繪自己

+0

框架檢查代碼,請 –

+0

我做,我給你一些建議。該代碼在過去3天內沒有更改,因此沒有其他可檢查的內容。如果您需要更多幫助,請發佈適當的[SSCCE](http://sscce.org/),並使用所給出的建議。 – camickr