2013-02-06 25 views
8

Tôi đang thiết kế đồ họa cho một trò chơi tôi đang lập trình, tôi muốn biết liệu có cách nào dễ dàng để mở khung khi một JLabel được cliked không?Nhấp vào một JLabel để mở một khung hình mới

Có mã dễ dàng cho điều này không?

enter image description here

+0

bạn có thể sử dụng 'giao diện MouseListener' và trong' mouseClicked (MouseEvent e) 'kiểm tra nguồn gốc của nhấp chuột sử dụng' e.getSource() == label' của bạn và tạo mới khung ở đó. – kaysush

+0

Chúng thực sự là các nút không có nền và viền. Nhãn không được thiết kế cho trường hợp sử dụng đó và sẽ khó khăn hơn để thích ứng với nhu cầu trong tương lai của trò chơi của bạn. Nhãn thậm chí không tập trung. Và hỗ trợ trợ năng của họ không phù hợp với trường hợp sử dụng của bạn, nếu bạn quan tâm đến điều đó. Cuối cùng, như là một lưu ý phụ, tôi sẽ không vẽ văn bản trên một bản vẽ, đặc biệt là nếu một phần của nó là cùng một màu sắc của văn bản. Tôi nghĩ rằng việc phát triển một giao diện tùy chỉnh sẽ ít đau hơn là sử dụng lại nhãn lừa trong nhiều phần của trò chơi. – ignis

+0

... như bố cục thẻ được đề xuất nên được xem xét tại đây –

Trả lời

17

Thực hiện giao diện MouseListener và sử dụng nó mouseClicked phương pháp để xử lý các nhấp chuột trên 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

Bạn có thể làm điều đó như thế này:

label.addMouseListener(new MouseAdapter() { 

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

tạo ra một nhãn và thêm sự kiện nhấp chuột vào nó.

Something như thế này:

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 . 
Các vấn đề liên quan