【发布时间】:2012-12-22 10:43:20
【问题描述】:
我有这个程序有不同的屏幕(由 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();
}
}
}
【问题讨论】:
-
不知道如何将
JPanel放置到JFrame,以获得更好的帮助,尽快发布SSCCE,简短,可运行,大约一个JButton(调用添加JPanel到JFrame) 和JPanel与一个JComponent导致上午问题 -
我实际上忘记了我实际代码中的
remove();等函数。对不起,我好像脑损伤了! -
不接受 :-),您忘记发布 SSCCE,包括我在这里的回答在内的所有内容都一无所知,请确保问题出在您未在此处发布的其余代码中。 ..
标签: java swing events awt event-listener