如何根据Swing中的条件调整面板?

时间:2014-03-06 17:12:13

标签: java swing jpanel

这是我创建新用户的代码。如果我尝试在没有登录的情况下创建新用户,则会显示一条消息,请先登录。然后我将登录并尝试创建新用户。我的问题是显示的前一个文本区域仍然启用。我无法在我的文本框中输入数据。我尝试使用remove()函数但没有用。

if(e.getSource()==createButton){
    //adminCard.remove(previlege);
    if(UID==0||users.size()==0){
        JPanel newUserCard = new JPanel(new FlowLayout());

        name = new JPanel( new GridLayout(1, 4));
        name.add(new JLabel("              "));
        userName=new JTextField(20);
        name.add(userName);
        name.add(new JLabel(" Name"));

        pword = new JPanel( new GridLayout(1, 4));
        pword.add(new JLabel("               "));
        pwd=new JTextField(20);
        pword.add(pwd);
        pword.add(new JLabel(" Password"));

        loginNamePanel = new JPanel( new GridLayout(1, 4));
        loginNamePanel.add(new JLabel("               "));
        loginName=new JTextField(20);
        loginNamePanel.add(loginName);
        loginNamePanel.add(new JLabel("UserName"));

        JPanel confirmpwd = new JPanel( new GridLayout(1, 3));
        confirmpwd.add(new JLabel("              "));
        confirmPassword=new JTextField(20);
        confirmpwd.add(confirmPassword);
        confirmpwd.add(new JLabel(" Confirm Password"));

        newUserCard.add(name);
        newUserCard.add( loginNamePanel);
        newUserCard.add(pword);
        newUserCard.add(confirmpwd);
        newUserCard.add(submit);
        displayUsers(users);
      // JSplitPane sw=new JSplitPane
        JSplitPane splitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,newUserCard,userPane);
        //splitPane.setDividerLocation(0.8);
        splitPane.setOneTouchExpandable(true);
        //splitPane.repaint();
        userPane.setMaximumSize(new Dimension(10,20));
        //adminCard.re

        adminCard.add(splitPane);
        adminCard.validate();
        submit.addActionListener(this);
    } 

if(loginState==false && users.size()!=0){
    JTextArea previlege=new JTextArea("Please login in order to create new users");
                adminCard.add(previlege);
                adminCard.validate();

            }

1 个答案:

答案 0 :(得分:0)

当您致电repaint();时,请尝试拨打validate();。只要您执行remove();removeAll();,就应该同时致电。{/ p>

adminCard.validate();
adminCard.repaint();

问题上的link to an earlier post