使用JButton更改JPanel的问题

时间:2014-10-04 13:22:58

标签: java swing jpanel layout-manager cardlayout

我遇到了问题!我正在制作一个包含多个面板的应用。我正在使用卡片布局,而且我没有更改到其他面板的问题。我有一个JButton(在一个名为optionsPanel的面板中)应首先更改为面板" panelCargando" (它有两个JLabel,一个带有文本,另一个带有平方动画GIF(72x72)),然后使用另一个叫做tweetsPanel的JPanel中显示的Twitter4J来查看一些信息。问题是,当我按下按钮时,它不会隐藏其他面板并制作" panelCargando"可见,它使选项面板保持在前面,当它完成查找信息时,它将两个面板放在一起。这是我在JButton的ActionListener中使用的代码:

btnNewButton_2.addActionListener(new ActionListener() 
    {
        public void actionPerformed(ActionEvent arg0) 
        {
            mainPanel.setVisible(false);
            optionsPanel.setVisible(false);
            tweetsPanel.setVisible(false);
            panelCargando.setVisible(true);

            long lCursor = -1;
            IDs friendsIDs;
            try
            {
                friendsIDs = twitter.getFriendsIDs(twitter.getId(), lCursor);
                System.out.println(twitter.showUser(twitter.getId()).getName());
                do
                {
                  for (long i : friendsIDs.getIDs())
                  {
                      if(textArea.getText().isEmpty())
                      {
                          textArea.setText(textArea.getText() + "ID de usuario: " + i +
                          "\nNombre de usuario: @" + twitter.showUser(i).getScreenName() + 
                          "\nNombre: " + twitter.showUser(i).getName() +
                          "\nDescripción: " + twitter.showUser(i).getDescription() +
                          "\nImagen de perfil: " + twitter.showUser(i).getProfileImageURLHttps() +
                          "\nSigue a " + twitter.showUser(i).getFriendsCount() + " usuarios" + 
                          "\nTiene " + twitter.showUser(i).getFollowersCount() + " seguidores\n");
                      }
                      else
                      {
                          textArea.setText(textArea.getText() + "\nID de usuario: " + i +
                          "\nNombre de usuario: @" + twitter.showUser(i).getScreenName() + 
                          "\nNombre: " + twitter.showUser(i).getName() +
                          "\nDescripción: " + twitter.showUser(i).getDescription() +
                          "\nImagen de perfil: " + twitter.showUser(i).getProfileImageURLHttps() +
                          "\nSigue a " + twitter.showUser(i).getFriendsCount() + " usuarios" + 
                          "\nTiene " + twitter.showUser(i).getFollowersCount() + " seguidores\n");
                      }  
                   }
                }
                while(friendsIDs.hasNext());

                frame.setTitle("Información sobre seguidores de " + twitter.showUser(twitter.getId()).getName() + " - BISmart");
                panelCargando.setVisible(false);
                tweetsPanel.setVisible(true);
                tweetsPanel.setFocusable(true);
                tweetsPanel.requestFocusInWindow();

所以,最后我看到" tweetsPanel"面板与textArea和" panelCargando"在前面。在我放在这里的代码中,我更改了它并添加了" panelCargando.setVisible(false)",但这样我根本无法看到它。

任何人都可以帮我吗?如果不清楚请告诉我!谢谢大家!

修改

现在代码就是这个,但我一直遇到问题。即使我做" layout.show(frame.getContentPane()," panelCargando")",面板也没有显示。我补充说:

layout = new CardLayout(0,0);
frame.getContentPane().setLayout(layout);
frame.getContentPane().add(splashPanel, "splashPanel");
frame.getContentPane().add(newTweetPanel, "newTweetPanel");
frame.getContentPane().add(mainPanel, "mainPanel");
frame.getContentPane().add(tweetsPanel, "tweetsPanel");
frame.getContentPane().add(optionsPanel,"optionsPanel");
frame.getContentPane().add(panelCargando, "panelCargando");

actionPerformed看起来像这样:

public void actionPerformed(ActionEvent arg0) 
        {
            layout.show(frame.getContentPane(), "panelCargando");
            long lCursor = -1;
            IDs friendsIDs;
            try
            {
                friendsIDs = twitter.getFriendsIDs(twitter.getId(), lCursor);
                System.out.println(twitter.showUser(twitter.getId()).getName());
                do
                {

                  for (long i : friendsIDs.getIDs())
                  {
                      if(textArea.getText().isEmpty())
                      {
                          textArea.setText(textArea.getText() + "ID de usuario: " + i +
                          "\nNombre de usuario: @" + twitter.showUser(i).getScreenName() + 
                          "\nNombre: " + twitter.showUser(i).getName() +
                          "\nDescripción: " + twitter.showUser(i).getDescription() +
                          "\nImagen de perfil: " + twitter.showUser(i).getProfileImageURLHttps() +
                          "\nSigue a " + twitter.showUser(i).getFriendsCount() + " usuarios" + 
                          "\nTiene " + twitter.showUser(i).getFollowersCount() + " seguidores\n");
                      }
                      else
                      {
                          textArea.setText(textArea.getText() + "\nID de usuario: " + i +
                          "\nNombre de usuario: @" + twitter.showUser(i).getScreenName() + 
                          "\nNombre: " + twitter.showUser(i).getName() +
                          "\nDescripción: " + twitter.showUser(i).getDescription() +
                          "\nImagen de perfil: " + twitter.showUser(i).getProfileImageURLHttps() +
                          "\nSigue a " + twitter.showUser(i).getFriendsCount() + " usuarios" + 
                          "\nTiene " + twitter.showUser(i).getFollowersCount() + " seguidores\n");
                      }  
                   }
                }
                while(friendsIDs.hasNext());

                frame.setTitle("Información sobre seguidores de " + twitter.showUser(twitter.getId()).getName() + " - BISmart");
                layout.show(frame.getContentPane(), "tweetsPanel");
            } 

0 个答案:

没有答案