Don[ITA]
24-02-2008, 23:54
Salve a tutti bella gente!!! Oggi mi sono messo in mente di fare un programmino stupidello per rappresentare (in qualche modo) un grafo (precisamente un grafo non orientato) e mi sono subito inbattuto in un problemuccio...
Ho creato un JPanel sul quale posso disegnare i nodi, che per semplicità rappresento come cerchiolini di colore ciano e bordo nero. Qui sotto riporto il codice che uso per disegnare i nodi sul pannello:
private class NodoGrafico extends JComponent{
private Coord coord;
private int x, y;
private Color bg = Color.CYAN;
private Color fg = Color.BLACK;
public NodoGrafico(Coord c){
super();
coord = c;
highlight();
}
public NodoGrafico(int x, int y){
super();
this.x = x;
this.y = y;
highlight();
}
/**
* I listener non vanno!!!!!!
*/
private void highlight(){
System.out.println("Ho addato i listener");
addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e){
System.out.println("Sei nel nodo");
bg = Color.MAGENTA;
}
@Override
public void mouseExited(MouseEvent e){
System.out.println("Uscito dal nodo");
bg = Color.CYAN;
}
});
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D nodo = (Graphics2D)g;
nodo.setColor(bg);
nodo.fillOval(x, y, 9, 9);
nodo.setColor(fg);
nodo.drawOval(x, y, 9, 9);
}
public Coord getCoord(){
return coord;
}
}
In parole povere questa classe NodoGrafico altro non è che un JComponent che disegna appunto il cerchietto.
Ora...io vorrei che al passaggio del mouse sopra questo cerchietto esso cambi colore in modo che si "evidenzi". Per far ciò ho usato il MouseListener ma...sorpresa sorpresa...il pallino non cambia!!!! Sembra che il mouse non ci passi mai sopra....:muro: :muro:
Avete idee del perchè succeda una cosa del genere???
Saluti :help:
Ho creato un JPanel sul quale posso disegnare i nodi, che per semplicità rappresento come cerchiolini di colore ciano e bordo nero. Qui sotto riporto il codice che uso per disegnare i nodi sul pannello:
private class NodoGrafico extends JComponent{
private Coord coord;
private int x, y;
private Color bg = Color.CYAN;
private Color fg = Color.BLACK;
public NodoGrafico(Coord c){
super();
coord = c;
highlight();
}
public NodoGrafico(int x, int y){
super();
this.x = x;
this.y = y;
highlight();
}
/**
* I listener non vanno!!!!!!
*/
private void highlight(){
System.out.println("Ho addato i listener");
addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e){
System.out.println("Sei nel nodo");
bg = Color.MAGENTA;
}
@Override
public void mouseExited(MouseEvent e){
System.out.println("Uscito dal nodo");
bg = Color.CYAN;
}
});
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D nodo = (Graphics2D)g;
nodo.setColor(bg);
nodo.fillOval(x, y, 9, 9);
nodo.setColor(fg);
nodo.drawOval(x, y, 9, 9);
}
public Coord getCoord(){
return coord;
}
}
In parole povere questa classe NodoGrafico altro non è che un JComponent che disegna appunto il cerchietto.
Ora...io vorrei che al passaggio del mouse sopra questo cerchietto esso cambi colore in modo che si "evidenzi". Per far ciò ho usato il MouseListener ma...sorpresa sorpresa...il pallino non cambia!!!! Sembra che il mouse non ci passi mai sopra....:muro: :muro:
Avete idee del perchè succeda una cosa del genere???
Saluti :help: