2013-02-06 8 views
8

Projektuję grafikę dla gry, którą programuję, chciałem się dowiedzieć, czy istnieje łatwy sposób otwierania ramki po kliknięciu przycisku JLabel?Kliknięcie przycisku JLabel w celu otwarcia nowej ramki

Czy istnieje prosty kod?

enter image description here

+0

można użyć 'interfejs MouseListener' aw' mouseClicked (MouseEvent e) 'sprawdzić źródło kliknięciem używając' e.getSource() == swoją label' i utworzyć nowy rama tam. – kaysush

+0

Są to w rzeczywistości przyciski bez tła i obramowań. Etykiety nie są zaprojektowane do tego zastosowania i będą trudniejsze do dostosowania do przyszłych potrzeb Twojej gry. Etykiety nie mają nawet ostrości. A ich obsługa ułatwień dostępu jest nieodpowiednia dla twojego przypadku użycia, jeśli ci na tym zależy. Wreszcie, na marginesie, nie rysowałbym tekstu nad rysunkiem, szczególnie jeśli jego część ma ten sam kolor tekstu. Myślę, że opracowanie niestandardowego wyglądu i odczuwania będzie mniejszym problemem niż wielokrotnym używaniem sztuczek z etykiety w wielu częściach gry. – ignis

+0

... ponieważ sugerowany układ karty należy tutaj uwzględnić –

Odpowiedz

17

Wdrożenie MouseListener interfejs i używać go mouseClicked metodę do obsługi kliknięcia na 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

Można to zrobić tak:

label.addMouseListener(new MouseAdapter() { 

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

utworzyć etykietę i dodać zdarzenie click w nim.

coś takiego:

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 . 
Powiązane problemy