Java 重新初始化组件时,我的eventlistener停止工作
我有一个不同屏幕的程序(用JPanels表示)。每次打开屏幕时,我都会重建面板,并将其放置在Java 重新初始化组件时,我的eventlistener停止工作,java,swing,events,awt,event-listener,Java,Swing,Events,Awt,Event Listener,我有一个不同屏幕的程序(用JPanels表示)。每次打开屏幕时,我都会重建面板,并将其放置在JFrame上 现在,当我第一次构建面板(总是相同的功能)并按下按钮时,附加到面板上的代码将运行。当我重建屏幕时,eventSource将永远不会等于实际的eventSource 见代码: public class NewUserScreen extends JPanel implements MouseListener{ //SButton inherits from Component
JFrame
上
现在,当我第一次构建面板(总是相同的功能)并按下按钮时,附加到面板上的代码将运行。当我重建屏幕时,eventSource
将永远不会等于实际的eventSource
见代码:
public class NewUserScreen extends JPanel implements MouseListener{
//SButton inherits from Component
SButton sb;
...
public void SetFields(){
removeAll();
revalidate();
repaint();
...
sb = new SButton(new Point(282, 295), "Save");
sb.addMouseListener(this);
add(sb);
...
}
...
@Override
public void mouseReleased(MouseEvent arg0) {
if(arg0.getSource().equals(sb)){
DBManager.addUser(...);
}else{
//So after the 2nd build, it will always run this code :(
ScreenManager.OpenAdminS();
}
}
}
- 使用而不是删除并将新视图添加到
- 必须调用父级(
)的JFrame
和(重新)validate()
,一次作为最后的代码行(在对容器进行所有更改之后)repaint()
不知道如何将
JPanel
放置到JFrame
,以便更快地发布一个简短、可运行的、大约只有一个JButton
(调用addJPanel
到JFrame
)和JPanel
的JComponent
,这导致了a.m.问题,我实际上忘记了remove()代码>实际代码中的etc函数。对不起,我好像脑损伤了!不接受:-),您忘了发布SSCCE,这里的所有内容,包括我的答案都非常简短,请确保问题存在于未发布在此处的其他代码中。。。