我遇到了问题!我正在制作一个包含多个面板的应用。我正在使用卡片布局,而且我没有更改到其他面板的问题。我有一个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");
}