MouseListiner

Odpowiedz Nowy wątek
2012-01-27 23:56
0

witam , mam problem taki ze jak najezdzam to zmienia sie kolor kola wychodze i sie zmienia na pierwotny a jak 2 raz wchodze to juz sie sypie program... nizej zamieszczam moja klase z rysowaniem i funkcja mouselistiner, ma ktos jakies pomysly jak to rozwiazaC?

public class rysuj extends JPanel implements MouseListener{

    protected static Graphics2D g2d;
    boolean mouseEntered  ; 
    protected void paintComponent(Graphics g) {
        addMouseListener (this); 
        super.paintComponent(g);
         g2d = (Graphics2D) g;

        //prostokat
          if(mouseEntered )
          {
                g2d.setColor(Color.RED);
                g2d.drawOval(10, 10, 380, 380);
                g2d.fillOval(10, 10, 380, 380);
                repaint(); 
          }
          else
          {
                //kolo
                g2d.setColor(Color.ORANGE);
                g2d.drawOval(10, 10, 380, 380);
                g2d.fillOval(10, 10, 380, 380);
                repaint(); 
          }

    }
    public void mouseEntered (MouseEvent me) 
    { 
        mouseEntered = true;
        repaint();

    }
    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseExited(MouseEvent me)
    {
        mouseEntered = false;
        repaint();
    }
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub

    }

}

Pozostało 580 znaków

2012-01-28 00:14
1

Za takie kody to powinni dawać zakaz programowania...

  1. Za wywołanie repaint() wewnątrz paint() powinni ci dać medal
  2. Za kopiowanie kodu w programie który ma kilka linijek tak samo
    Rozumiem że bląd stackOverflow cię nie zaciekawił?
  3. Za robienie klas z serii "człowiek orkiestra" też należałby sie zakaz. Lekcja na dziś: zasada jednej odpowiedzialności. Jak cos jest panelem to nie jest mouse listenerem...
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Rysuj extends JPanel {
private static final long serialVersionUID = 1L;
protected static Graphics2D g2d;
private Color kolor = Color.red;
boolean mouseEntered;

public Rysuj() {
    addMouseListener(new KolorekMouseListener(this));
}

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g2d = (Graphics2D) g;
    g2d.setColor(kolor);
    g2d.drawOval(10, 10, 380, 380);
    g2d.fillOval(10, 10, 380, 380);
}

protected void changeColor(Color c) {
    kolor = c;
}

public static void main(String[] args) {
    JFrame okno = new JFrame();
    okno.add(new Rysuj());
    okno.pack();
    okno.setVisible(true);
}

class KolorekMouseListener implements MouseListener {

    private final Rysuj panel;

    public KolorekMouseListener(Rysuj rysuj) {
        panel = rysuj;
    }

    @Override
    public void mouseEntered(MouseEvent me) {
        changeColor(Color.red);
    }

    @Override
    public void mouseExited(MouseEvent me) {
        changeColor(Color.blue);
    }

    private void changeColor(Color c) {
        panel.changeColor(c);
        panel.repaint();
    }

    @Override
    public void mouseClicked(MouseEvent e) {
    }

    @Override
    public void mousePressed(MouseEvent e) {
    }

    @Override
    public void mouseReleased(MouseEvent e) {
    }

}

}


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 2x, ostatnio: Shalom, 2012-01-28 00:21
dodawanie mouselistenera w kazdym paintcie też ciekawe:) - Antoniossss 2012-01-28 01:02
O tym to aż żal było wspominać... - Shalom 2012-01-28 01:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0