摆动,多个屏幕,控制转移

我正在开发一个swing应用程序。 我正在使用两个屏幕

1. screen1的按钮将启动屏幕2。

伪码:

ScreenA extends JFrame{ onButtonClick(){ Screen2.setVisible(true); } System.out.println("Hai"); } Screen2 extends JFrame{ onButtonClick{ Hide this screen; } } 

现在输出是:

  1. 屏幕2将显示2.Hai将被打印。

我的目标:我只想在点击屏幕2的按钮并且屏幕2消失时才显示hai。

我如何实现它?

我尝试在屏幕2中为buttonclicked设置一个标志。 但程序只是通过条件并继续下一行。 我如何保持控制?

使用modal dialog。 有关更多详细信息,请参见如何创建对话框 。

希望这个片段中的评论能帮助您解释一些事情。

 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TwoFrames { // Making our first JFrame. JFrame frame1 = new JFrame("FRAME 1"); // Declaring our second JFrame. JFrame frame2 ; public void createAndDisplayGUI() { // Used to close the JFrame graciously. frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); // Used to position the JFrame at the middle of the screen. //frame1.setLocationRelativeTo(null); // Use this instead for placing windows, as determined by the OS. frame1.setLocationByPlatform(true); // Calling this method to create our frame2. makeNewFrame(); // Button to show the second JFrame. JButton showButton = new JButton("SHOW NEW FRAME"); showButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { // Checking if the frame2 is already visible // on the screen, if YES then we won't // create a new frame, else a new frame // will be created. This will prevent multiple // JFrame to be created at the click of this button. if (!(frame2.isShowing())) { // If you had already disposed it previously // by clicking the hide Button on the other frame // then the click on this button will recreate // a new frame to be displayed. makeNewFrame(); frame2.setVisible(true); } } }); // Adding the button to the South side of the frame1. frame1.add(showButton, BorderLayout.PAGE_END); frame1.pack(); frame1.setVisible(true); } private void makeNewFrame() { frame2 = new JFrame("FRAME 2"); frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame2.setLocationByPlatform(true); // Creating a JButton to be shown on the JFrame. JButton hideButton = new JButton("HIDE FRAME"); hideButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { // On the click of this button, frame2 will // disappear and HAI will be displayed on the console. frame2.dispose(); System.out.println("HAI"); } }); // Adding the button to the South side of the frame1. frame2.add(hideButton, BorderLayout.PAGE_END); frame2.pack(); } public static void main(String... args) { /* Here we are Secheduling a JOB for * Event Dispatcher Thread, since Swing * is not Thread Safe. This is used to place * the code which is responsible for * creating and diaplaying your GUI. */ SwingUtilities.invokeLater(new Runnable() { public void run() { TwoFrames tf = new TwoFrames(); tf.createAndDisplayGUI(); } }); } }