我有不同屏幕的此程序(由JPanels代表)。每次屏幕打开时,我都会重建该面板,并将其放在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();
}
}
}
答案 0 :(得分:2)
让这个程序有不同的屏幕(由JPanels代表)。 每次屏幕打开时,我都会重建该面板,然后将其放在屏幕上 的JFrame。
现在,当我第一次构建面板时(总是一样的) 功能)并按下一个按钮,附加的代码将运行。当我 重建屏幕eventSource永远不会等于实际 的EventSource。
(re)validate()
)调用repaint()
和JFrame
,一次,作为最后一行代码行(在完成对容器的所有更改之后)