Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di caralu
    Registrato dal
    Sep 2004
    Messaggi
    135

    JLabel che non si sposta!!

    Ciao a tutti! Un'altra incognita nel mio progetto, una cosa che non riesco a spiegarmi:
    Creo una JLabel e la carico sopra un JFrame, setto le coordinate di comparsa del JLabel in un determinato punto, ma invece me lo visualizza in un'altro punto! Qualsiasi coordinate gli setti alla JLabel questa rimane fissa nello stesso punto!
    Vi posto un po di codice:
    codice:
    ----------------------------------
    //Sono nel costruttore della classe: qua inizializzo tutte le variabili
    //Assegno un nuovo riferimento alla mia JLabel
    labelPunti = new JLabel(); 
    //Setto il mio Font:
    labelPunti.setFont(new Font(labelPunti.getFont().getName(),Font.BOLD,20));
    labelPunti.setBackground(Color.red); //Imposto colore di sfondo della JLabel
    //POSIZIONO LA LABEL IN QUESTE COORDINATE (ma anche cambiandole non 
    //risolvo niente!!!!)
    labelPunti.setBounds(400, 400, 100, 200);
    //Aggiungo la JLabel sopra il mio frame
    frame.add(labelPunti, JLayeredPane.PALETTE_LAYER); 
    -----------------------------------
    //In questo metodo ad ogni iterazione del ciclo while disegno nuovamente la
    //JLabel e altri elementi nel JFrame:
    
    while(gameRunning) 
    {
            Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
                
            // clear the screen
            g.setColor(Color.black);
            g.fillRect(0,0,1024,768); //A tutto schermo
                
            // render our game objects
            g.translate(0, 30); //Sposto l'oggetto grafico principale che dovrò disegnare
                
            g.setColor(Color.red);
            //Aggiorno il valore del punteggio nella JLabel, settando il nuovo testo
            labelPunti.setText("PUNTI" + punteggio); 
            labelPunti.paint(g);
    .........//Eseguo qua le altre funzioni del ciclo
    }
    Come mai mi visualizza la JLabel a coordinate (più o meno) 0, 100????
    Linux Slackware 11 - Kernel 2.6.18

  2. #2
    provato a svuotare la cache della Java Console?
    ... :master: riconosco l'esistenza di un limite a tutto , ma non l'accetto ...

  3. #3
    se non chiami il repaint() non va mettilo dopo ogni istruzione di modifica della label.
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Se il Container (frame) non ha LayoutManager posto a null, qualunque tentativo di posizionare un elemento in ordine diverso da quello imposto dal layoutmanager corrente (se non è stato dichiarato esplicitamente, java attacca un FlowLayout comunque) non sortirà alcun effetto.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    codice:
    package prove;
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Point;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.border.BevelBorder;
    
    public class ProvaLabel extends JPanel{
    	
    
    	private static final long serialVersionUID = 1L;
    	private JLabel prova;
    	private Point posizione=new Point(0,0);
    	public ProvaLabel() {
    		prova=new JLabel("Testo");
    		prova.setBorder(new BevelBorder(BevelBorder.RAISED));
    		addMouseListener(new MouseListener(){
    
    			
    
    			public void mouseClicked(MouseEvent e) {
    				posizione=getMousePosition();	
    				//repaint();
    			}
    
    			public void mouseEntered(MouseEvent e) {
    				// TODO Auto-generated method stub
    				
    			}
    
    			public void mouseExited(MouseEvent e) {
    				// TODO Auto-generated method stub
    				
    			}
    
    			public void mousePressed(MouseEvent e) {
    				// TODO Auto-generated method stub
    				
    			}
    
    			public void mouseReleased(MouseEvent e) {
    				// TODO Auto-generated method stub
    				
    			}			
    			
    		});
    		add(prova);
    	}
    	@Override
    	public void paint(Graphics g) {
    		 Graphics2D g1 = (Graphics2D) g;
            g1.clearRect(0, 0, 200, 200);
    	     	            
    	     // render our game objects
    	     g1.translate(posizione.getX(), posizione.getY()); //Sposto l'oggetto grafico principale che dovrò disegnare
    	            
    	     g1.setColor(Color.red);
    	     //Aggiorno il valore del punteggio nella JLabel, settando il nuovo testo
    	     prova.setText("PUNTI"); 
    	     prova.paint(g1);
    	     repaint();
    	}
    	public static void main(String[] args) {
    		JFrame prova=new JFrame();
    		prova.add(new ProvaLabel());
    		prova.setBounds(30, 30, 200, 200);
    		prova.setVisible(true);
    		prova.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    	
    }
    Non ho messo a null il LayoutManager del JFrame ma posso tranquillamente spostare la label con il mouse.
    Lang=Java
    Ambiente = Eclipse forever
    Ubuntu & Win XP Pro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.