我正在用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);
}
}
暂无答案!
目前还没有任何答案,快来回答吧!