【发布时间】:2016-12-21 15:59:52
【问题描述】:
这是一个奇怪的情况。我删除框架的内容并添加新内容。
但是旧的内容被添加了两次。为什么会这样?
这可能看起来像很长的代码,但其中大部分是为框架生成内容。
问题,正如我所看到的,从 addUserFrame()ActionListener 调用 manager() 函数时开始/em> 函数。
public class adminManager {
private static Connection con;
private static Statement stmt;
private static JFrame f;
private static JPanel p = new JPanel();
private static JButton addUser,exitTest,addTest,editTest;
public static void manager(JFrame frame)
{
f=frame;f.setSize(400,800);
p.setLayout(new BoxLayout(p, BoxLayout.Y_AXIS));
Dimension d = new Dimension(100,30);
addUser = new JButton("ADD USER");
exitTest = new JButton("EXIT");
addTest = new JButton("ADD TEST");
editTest = new JButton("EDIT TEST");
p.add(addUser);p.add(addTest);
p.add(editTest);p.add(exitTest);
f.setTitle("Select Option");
f.setLayout(new FlowLayout());
f.add(p);
f.setVisible(true);
f.setResizable(false);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
bindEvents();
}
public static void addUserFrame(JFrame f)
{
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();J
Panel parentPanel = new JPanel();
JLabel l1 = new JLabel("Enter User-Name");
JLabel l2 = new JLabel("Enter Password");
JTextField t1 = new JTextField(10);
JTextField t2 = new JTextField(10);
JButton btn = new JButton("Submit");
JButton back = new JButton("Go Back");
p1.setLayout(new FlowLayout(FlowLayout.CENTER));
p2.setLayout(new FlowLayout(FlowLayout.CENTER));
p3.setLayout(new FlowLayout(FlowLayout.CENTER));
parentPanel.setLayout(new BoxLayout(parentPanel,BoxLayout.Y_AXIS));
p1.setSize(200,100);
p2.setSize(200,100);
p3.setSize(200,100);
p1.add(l1);p1.add(t1);
p2.add(l2);p2.add(t2);
p3.add(btn);p3.add(back);
parentPanel.add(p1);parentPanel.add(p2);parentPanel.add(p3);
f.add(parentPanel);
back.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
f.getContentPane().removeAll();f.repaint();
manager(f);
}
});
}
public static void bindEvents(){
addUser.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
f.getContentPane().removeAll();
f.repaint();
addUserFrame(f);
f.setSize(400, 150);
f.setTitle("Add User");
f.setVisible(true);
}
});
}
public static void main(String []args){
manager(new JFrame());
}
}
更新:
通过将p=new JPanel()移动到manager()方法解决
【问题讨论】:
-
(1-) 我敢肯定,您不会在每一行编写包含多个语句的代码,从而使代码无法阅读和维护。所以不要指望我们会在论坛上阅读这样的代码。发布格式正确的代码。
-
@camickr done.now 让我们看看你是否能回答它
-
另外,请遵守 Java 语言约定:类名应以大写字母开头。
-
这不是@camickr 所说的,他的意思是:
p.add(addUser);p.add(addTest);为什么在同一行上有两个语句?他指的不是与if () {在同一行的花括号,而是我向您展示的那些! -
@Frakcool 感谢您的帮助。我的错误和一个愚蠢的错误。解决了它。
标签: java swing layout-manager