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 楼答案
也可以试着调用
repaint();
,当你调用validate();
时,无论何时做remove();
或removeAll();
,你都应该调用这两个关于这个问题的A link to an earlier post