有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

这是我创建新用户的代码。如果我尝试创建新用户而不登录,它将显示一条消息,请先登录。然后我将登录并尝试创建新用户。我的问题是显示的上一个文本区域仍然处于启用状态。我无法在文本框中输入数据。我尝试使用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) 个答案

  1. # 1 楼答案

    也可以试着调用repaint();,当你调用validate();时,无论何时做remove();removeAll();,你都应该调用这两个

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

    关于这个问题的A link to an earlier post