2013-02-06 12 views
8

Sto progettando la grafica per un gioco che sto programmando, volevo sapere se c'è un modo semplice per aprire una cornice quando si taglia una JLabel?Fare clic su una JLabel per aprire una nuova cornice

C'è un codice facile per questo?

enter image description here

+0

è possibile utilizzare l'interfaccia 'MouseListener' e in' mouseClicked (MouseEvent e) 'verificare la fonte di clic utilizzando' e.getSource() == tuo label' e creare nuove telaio lì. – kaysush

+0

Sono in realtà pulsanti senza sfondo e bordi. Le etichette non sono progettate per tale caso d'uso e sarà più difficile adattarsi alle esigenze future del tuo gioco. Le etichette non hanno nemmeno messa a fuoco. E il loro supporto per l'accessibilità è inappropriato per il tuo caso d'uso, se ti interessa. Infine, come nota a margine, non disegnerei il testo su un disegno, specialmente se parte di esso è dello stesso colore del testo. Penso che sviluppare un look and feel personalizzato sia meno doloroso piuttosto che riutilizzare il trucco dell'etichetta in molte parti del gioco. – ignis

+0

... come dovrebbe essere considerato il layout della carta suggerito qui –

risposta

17

Implementare MouseListener interfaccia e utilizzarlo mouseClicked metodo per gestire i clic sul JLabel.

label.addMouseListener(new MouseAdapter() 
{ 
    public void mouseClicked(MouseEvent e) 
    { 
     // you can open a new frame here as 
     // i have assumed you have declared "frame" as instance variable 
     frame = new JFrame("new frame"); 
     frame.setVisible(true); 

    } 
}); 
1

Si potrebbe fare che in questo modo:

label.addMouseListener(new MouseAdapter() { 

     public void mouseClicked(MouseEvent e) 
     { 
       JPanel j = new JPanel(); 
       frame.setContentPane(j); 
     } 
}); 
1

creare un'etichetta e aggiungere evento click in esso.

Qualcosa di simile a questo:

JLabel click=new JLabel("Click me"); 

click.addMouseListener(new MouseAdapter() { 
     public void mouseClicked(MouseEvent e) { 
      JFrame jf=new JFrame("new one"); 
     jf.setBackground(Color.BLACK); 
     jf.setSize(new Dimension(200,70)); 
     jf.setVisible(true); 
     jf.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     } 
    }); 
-1
1:- Implement your class containing the JLabel with MouseListener interface 
2:- add MouseListener to your JLabel 
3:-Override mouseClicked Event in your class 
4:- In mouseClicked Even't body add your code to open a new JFrame/Frame .