Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    148

    problema sfondo applicazione

    ho creato un applicazione che con un click visualizza le coordinate del mouse solo ke utilizzando uno sfondo non viene più visualizzato il label con il messaggio"clicca sullo schermo"...come si può risolvere?
    ecco il codice:
    codice:
    public class Finestra extends JFrame implements MouseListener {
        private int x, y;
        private JLabel la = new JLabel("clicca sullo schermo!", JLabel.CENTER);
        private boolean tray=true;
        public Finestra() {
            try {
            Robot robot = new Robot();
            
    
            robot.delay(2000);
            BufferedImage image = robot.createScreenCapture(new rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
            setSize(Toolkit.getDefaultToolkit().getScreenSize());
            JLabel label = new JLabel(new ImageIcon(image));
            
            setTitle("Programma");
            setLocation(0,0);
            
            add(la);
            add(label);
    
            addMouseListener(this);
            setVisible(tray);
            }
    catch (AWTException exception){}
        }
    
    
    
    
        
        public void mousePressed(MouseEvent e) {
            x = e.getX();
            y = e.getY();
            la.setText("x = " + x + " y = " + y);
            tray=false;
            
        }
    
        public void mouseReleased(MouseEvent e) { }
        public void mouseEntered(MouseEvent e) { }
        public void mouseExited(MouseEvent e) { }
        public void mouseClicked(MouseEvent e) { }
    
        public static void main(String[] args) {
            new Finestra();
        }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: problema sfondo applicazione

    Originariamente inviato da killerbomb
    codice:
    add(la);
    add(label);
    Il content pane del JFrame ha per default un BorderLayout. Hai fatto 2 add(). Tali add è come se fossero add(xyz, BorderLayout.CENTER) in pratica entrambe le label vanno nella parte CENTER .... ma solo 1 è visualizzata!! Ci sono 5 aree nel BorderLayout, ogni area può visualizzare solo un componente. Punto.

    Vuoi sovrapporre un testo ad una immagine? L'approccio deve essere diverso.

    a) Estendi JPanel, disegni la immagine facendo l'override di paintComponent() ed essendo un pannello puoi settare il layout manager che vuoi (o toglierlo) e mettere un componente dentro il pannello come/dove vuoi.

    b) Usi un JLayeredPane mettendo 2 JLabel su "strati" diversi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

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 © 2024 vBulletin Solutions, Inc. All rights reserved.