我一遍又一遍地试过它。它不起作用。当我点击标签时,没有任何反应。
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:
}
答案 0 :(得分:1)
看起来是一个愚蠢的问题,但是,你确定你的方法被调用了吗?您的对象是否已注册为此标签的事件侦听器?
为了确保,您应该实现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看起来不像事件处理程序方法
编辑:顺便说一句,您可能希望在此界面中实现其他方法,即使您不需要它们也是如此。查看文档:{{3}}
答案 1 :(得分:0)
如果正确实现了Listener,那么你应该改变这个
o.setPreferredSize(new Dimension(122,200));
用这个
o.setSize(122,200);
你也可以使用setVisible
方法,但它也可以在没有它的情况下使用
答案 2 :(得分:0)
我认为您正在使用Netbeans,如果是,那么您显示的方法是自动生成的,这意味着它已在其自动生成的代码段中正确实现了Listeners,现在这意味着您在显示JPanel时出错在实现监听器时,我找到了一些建议,
Broder
布局但其Border
布局,但在发布问题时这似乎是一个错字。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();
}