[英]Displaying a JPanel on JFrame by a label click
我一遍又一遍地嘗試它,它不起作用。當我點擊標簽時,什么也沒有發生。
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt)
{
setLayout(new BorderLayout());
JPanel o = new JPanel ();
o.setPreferredSize(new Dimension(122,200));
o.setBackground(Color.red);
add(o,BroderLayout.CENTER);
// TODO add your handling code here:
}
看起來一個愚蠢的問題,但是,您確定您的方法正在被調用嗎? 您的對象是否注冊為該標簽的事件偵聽器?
可以肯定的是,您應該實現MouseListener接口:
public class YourClass () implements MouseListener{
public YourClass(){
...
label.addListener(this);
}
// and then implement the method to handle the event
public void mouseClicked(MouseEvent e) {
// TODO: Handle the event
}
}
jLabel1MouseClicked看起來不像事件處理程序方法
編輯:順便說一句,即使您不需要它們,您可能想在此接口中實現其他方法。 查看文檔: MouseListener示例
如果偵聽器實現正確,則應更改此設置
o.setPreferredSize(new Dimension(122,200));
有了這個
o.setSize(122,200);
您也可以放置setVisible
方法,但也可以在沒有它的情況下使用
我認為您正在使用Netbeans,如果是,則顯示的方法是自動生成的,這意味着它已在其自動生成的代碼段中正確實現了偵聽器,現在,這意味着您在顯示JPanel時出現了錯誤,而不是在實現偵聽器中,所以我為您找到了一些建議,
Broder
Layout,但是編寫了Border
Layout,但這在發布Question時似乎是一個錯字。 this.revalidate();
所以最后您的代碼應該是這樣的
private void jLabel1MouseClicked(java.awt.event.MouseEvent evt)
{
setLayout(new BorderLayout());
JPanel o = new JPanel ();
o.setPreferredSize(new Dimension(122,200));
o.setBackground(Color.red);
add(o,BorderLayout.CENTER);
revalidate();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.