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

时间:2012-02-25 10:22:01

标签: java swing jframe

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

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

PseudoCode:

ScreenA extends JFrame{

    onButtonClick(){
        Screen2.setVisible(true);
    }
    System.out.println("Hai");
}

Screen2 extends JFrame{
    onButtonClick{
         Hide this screen;
    }
}

现在输出是:

  1. 将显示屏幕2 2.Hai将被打印。
  2. 我的目标:我只想在点击屏幕2的按钮并且屏幕2消失时显示hai。

    我如何实现它?

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

2 个答案:

答案 0 :(得分:4)

希望此片段中的评论可以帮助您解释事情。

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();
            }
        });
    }
}

答案 1 :(得分:3)

使用模态对话框。有关详细信息,请参阅How to Make Dialogs