Java 将监听器添加到JPanel,该监听器将仅被称为onload
问题很直截了当: 在C#WinForms中,Winform上有一个名为onload>的侦听器Java 将监听器添加到JPanel,该监听器将仅被称为onload,java,swing,actionlistener,Java,Swing,Actionlistener,问题很直截了当: 在C#WinForms中,Winform上有一个名为onload>的侦听器 这也是我想在我的JPanel中创建的内容,因为我想用数据库中的数据填充我的JList 我尝试使用MouseMotionListener,但是我需要一个计时器来控制数据库中的select语句,否则他会用select语句向数据库发送垃圾邮件 我得到了开关面板的代码: public void changePanel(String panelRef) { ((CardLayout) (getConte
这也是我想在我的JPanel中创建的内容,因为我想用数据库中的数据填充我的JList
我尝试使用MouseMotionListener,但是我需要一个计时器来控制数据库中的select语句,否则他会用select语句向数据库发送垃圾邮件 我得到了开关面板的代码:
public void changePanel(String panelRef) {
((CardLayout) (getContentPane().getLayout())).show(getContentPane(), panelRef);
}
面板被实例化并添加到JFrame中。我看到您正在使用CardLayout,您想知道什么时候可以看到卡。您可以在面板上使用分层侦听器 监听面板是否可见的基本代码是:
@Override
public void hierarchyChanged(HierarchyEvent e)
{
JComponent component = (JComponent)e.getSource();
if ((HierarchyEvent.SHOWING_CHANGED & e.getChangeFlags()) != 0
&& component.isShowing())
{
// add code here
}
}
FWIW,这种方法是对
CardLayout
的扩展,在卡激活时提供附加功能。尝试ComponentListener
作为解决方法:
panel.addComponentListener(new ComponentAdapter() {
boolean loaded = false;
@Override
public void componentShown(ComponentEvent ce) {
if(loaded) {
return;
}
loaded = true;
//to do here
}
});
我不确定其他人,但对我来说,如果您提供更多细节、上下文和代码,这将有所帮助。对于istance,JPanel何时“加载”?事件是否会引发此事件?您是否正在交换视图,例如使用CardLayout?这取决于Java没有“加载”的概念。您可以使用构造函数,或者提供自己的“load”方法,当您想要执行加载时可以调用该方法action@HovercraftFullOfEels我编辑了这个问题