向 JPanel 添加仅调用 onload 的侦听器
Add listener to JPanel that will be only called onload
好吧,问题很简单:
在 C# WinForms 中,您在 Winform 上获得了一个名为 onload > onload winforms 的侦听器。
这也是我想在我的 JPanel 中创建的,因为我想用数据库中的数据填充我的 JList。
我尝试使用 MouseMotionListener,但随后我需要一个定时器来控制对数据库的 select 语句,否则他会使用 select 语句向数据库发送垃圾邮件。
我得到了这个代码来切换面板:
public void changePanel(String panelRef) {
((CardLayout) (getContentPane().getLayout())).show(getContentPane(), panelRef);
}
面板已实例化并添加到 JFrame 中。
我看到您正在使用 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 中使用,它是 CardLayout
的扩展,可在卡激活时提供附加功能。
尝试 ComponentListener
作为解决方法:
panel.addComponentListener(new ComponentAdapter() {
boolean loaded = false;
@Override
public void componentShown(ComponentEvent ce) {
if(loaded) {
return;
}
loaded = true;
//to do here
}
});
好吧,问题很简单:
在 C# WinForms 中,您在 Winform 上获得了一个名为 onload > onload winforms 的侦听器。
这也是我想在我的 JPanel 中创建的,因为我想用数据库中的数据填充我的 JList。
我尝试使用 MouseMotionListener,但随后我需要一个定时器来控制对数据库的 select 语句,否则他会使用 select 语句向数据库发送垃圾邮件。
我得到了这个代码来切换面板:
public void changePanel(String panelRef) {
((CardLayout) (getContentPane().getLayout())).show(getContentPane(), panelRef);
}
面板已实例化并添加到 JFrame 中。
我看到您正在使用 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 中使用,它是 CardLayout
的扩展,可在卡激活时提供附加功能。
尝试 ComponentListener
作为解决方法:
panel.addComponentListener(new ComponentAdapter() {
boolean loaded = false;
@Override
public void componentShown(ComponentEvent ce) {
if(loaded) {
return;
}
loaded = true;
//to do here
}
});