jcomponent可见性的奇怪问题

bgibtngc  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(202)

我正在用java中的swing开发一个gui项目,程序通常运行良好。但是,在每个屏幕下,我都有一个back按钮,它调用屏幕前面的方法,遍历包含当前屏幕上所有元素的arraylist,并调用setvisible(false)。在运行程序时,如果您单击一次“后退”按钮,它就会正常工作,但是如果您返回屏幕,再次单击它,它需要两次单击才能正常工作,然后单击四次,然后单击八次,依此类推。我不知道发生了什么,也不知道它为什么会这样,因为我的代码中似乎没有任何东西能做到这一点。此外,有时按钮会正确返回到上一个屏幕,但会保持当前屏幕上的组件处于活动状态,就好像从未调用setvisible(false)一样。下面的代码表示我的项目的一般结构。它在做什么导致了这个问题?

import java.awt.Color;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;

 import javax.swing.*;
 public class MAIN {
static JFrame frame;
static JPanel panel;
 public static void main(String [] args) {
    mainScreen();

}
 public static void mainScreen() {
      JButton newScreen = new JButton("Next Screen");
      frame = new JFrame();
      panel = new JPanel();
      panel.setBounds(0,0,1920,1080);
      panel.setBackground(Color.cyan);

    newScreen.setBounds(50, 500, 100, 500);

    newScreen.addActionListener(new ActionListener() { 

         public void actionPerformed(ActionEvent e) {
             newScreen.setVisible(false);
             JButton returnButton = new JButton("return");
                     returnButton.setBounds(50, 50, 100, 100);
                     panel.add(returnButton);
                     returnButton.addActionListener(new ActionListener() {
                         public void actionPerformed(ActionEvent e) {
                             returnButton.setVisible(false);
                             mainScreen();
                         }
                     });

             }
         });

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.add(newScreen);
frame.add(panel);        
frame.setSize(1920,1080);
frame.setLayout(null);
frame.setVisible(true);

     }

      }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题