2014-01-28 4 views
0

Это вообще не будет рисовать, любые идеи? На задней панели ничего не отображается, как мне рисовать с помощью события mouseDragged?JPanel не окрашивается краской Компонент

Я не могу даже показать одну строку с этим ... Вот исходный код .. Я добавил JButton просто чтобы увидеть, если на самом деле отображается Группа

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) { 
     } 
    } 
} 

ответ

3

JFrame не имеет метод call paintComponent. Если вы использовали аннотацию @Override, компилятор потерпел бы неудачу.

Также обратите внимание, что вы звоните super.paintComponents - Обратите внимание на «S» в конце концов, это должно иметь будучи Interactor проблем

JComponent (или JPanel, который проходит JComponent) является то, что вы после этого.

Взгляните на Performing Custom Painting для более подробной информации

Я должен также упомянуть, что back.setSize(500,500) не имеет никакого значения, так как менеджер компоновки будет решить, какой размер он хочет сделать компонент

+0

Вы, кажется, на рулоне сегодня , Каждый вопрос, на который я смотрел, это _you_. Я думаю, что это только один из таких дней: D –

+0

@peeskillet Медленный день на работе ... я сказал это вслух? – MadProgrammer

Смежные вопросы