问题很简单:
在C#WinForms中,你在Winform上有一个名为onload>的监听器。 onload winforms。
这也是我想在我的JPanels中创建的,因为我想用数据库中的数据填充我的JList。
我尝试使用MouseMotionListener,但后来我需要一个Timer来控制数据库的select语句,否则他会用select语句向数据库发送垃圾邮件。
我有这个代码来切换面板:
public void changePanel(String panelRef) {
((CardLayout) (getContentPane().getLayout())).show(getContentPane(), panelRef);
}
面板被实例化并添加到JFrame中。
答案 0 :(得分:3)
我看到你正在使用CardLayout而且你想知道什么时候卡片可见。您可以在面板上使用HierarchyListener。
监听面板变得可见的基本代码是:
@Override
public void hierarchyChanged(HierarchyEvent e)
{
JComponent component = (JComponent)e.getSource();
if ((HierarchyEvent.SHOWING_CHANGED & e.getChangeFlags()) != 0
&& component.isShowing())
{
// add code here
}
}
FWIW,这种方法在Card Layout Focus中使用,{{3}}是CardLayout
的扩展,在卡片变为活动状态时提供额外的功能。
答案 1 :(得分:2)
尝试ComponentListener
作为解决方法:
panel.addComponentListener(new ComponentAdapter() {
boolean loaded = false;
@Override
public void componentShown(ComponentEvent ce) {
if(loaded) {
return;
}
loaded = true;
//to do here
}
});